是不是new运算一定要用delete,而delete删除的指针不一定是new运算申请的?
1个回答
展开全部
1)new 和 delete 必须成对出现;
2)new 底层调用操作系统堆内存管理函数HeapAlloc来分配堆内存;
3)delete 操作符底层调用API接口函数HeapFree来释放堆内存;
可以在VC++6.0下调试,通过调用栈来分析new,delete操作涉及的与操作系统的交互过程。
1。静态区: 全局变量。
2。堆: 程序执行是分配的内存
3。栈: 函数调用,局部变量。
new出来的内存就是分配到堆上的。程序执行完以后,堆上分配的内存不会被操作系统自动回收,所以你不delete掉的话,操作系统不回收,那块内存就成了没爹没娘的无业有民了,这个就叫内存泄露。
静态区和栈上面分配的内存操作系统会自动回收。所以不用delete了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询