Kaminora 2024-02-28 17:59 采纳率: 100%
浏览 4
已结题

难道一直用的delete[] 都没释放干净吗?


#include <iostream>
using namespace std; 
 
 
int main() {
//定义数组赋值42
    int *a=new int[5];
    int i=0;
    for(i=0;i<5;i++){
        a[i]=42;
    }
//输出
    for(i=0;i<5;i++){
        cout<<a[i]<<" ";
    }
    cout<<endl;
    printf("=============================\n");
//delete数组
    delete[] a;
//再次输出
    for(i=0;i<5;i++){
        cout<<a[i]<<" ";
    }
    cout<<endl;
    return 0;
}      

运行结果:

42 42 42 42 42
=============================
2036816 0 2031952 0 42

最后一个还是42,难道是delete[]一直都不能释放干净?(二维三维也有42还在)

  • 写回答

4条回答 默认 最新

  • 赵4老师 2024-02-29 10:30
    关注

    其实电脑开机后物理内存的每个字节中都有值且都是可读写的,从来不会因为所谓的new、delete或malloc、free而被创建、销毁。区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月10日
  • 创建了问题 2月28日

悬赏问题

  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题
  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵
  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了