是不是new运算一定要用delete,而delete删除的指针不一定是new运算申请的?

2025-01-01 12:23:59
推荐回答(1个)
回答1:

1)new 和 delete 必须成对出现;

2)new 底层调用操作系统堆内存管理函数HeapAlloc来分配堆内存;

3)delete 操作符底层调用API接口函数HeapFree来释放堆内存;

可以在VC++6.0下调试,通过调用栈来分析new,delete操作涉及的与操作系统的交互过程。

1。静态区: 全局变量。

2。堆: 程序执行是分配的内存

3。栈: 函数调用,局部变量。

new出来的内存就是分配到堆上的。程序执行完以后,堆上分配的内存不会被操作系统自动回收,所以你不delete掉的话,操作系统不回收,那块内存就成了没爹没娘的无业有民了,这个就叫内存泄露。

静态区和栈上面分配的内存操作系统会自动回收。所以不用delete了。