C++ new的时候,为啥会存在内存分配会失败的情况?啥导致的呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ new的时候,为啥会存在内存分配会失败的情况?啥导致的呢?相关的知识,希望对你有一定的参考价值。

参考技术A 这样是会有内存泄漏的,因为第一次执行s
=
new
stu;
后,系统申请了一块新的内存空间(类型为stu),并把其地址赋给s
第2此执行s
=
new
stu后,系统又申请了一块新的内存空间,并把其地址赋给s,此时把s原来的值覆盖掉了,也就是第一次申请的内存空间的地址丢失了
而delete
s;
只是把现在s指向的内存中的变量删除,这就把第二次申请的变量删除了,但是这样并不能将第一次申请的变量删除,因为其地址已经丢失掉了
就算你执行两次delete语句也是没有用的,这样就算编译器不报错,执行程序的时候都会报错,因为你删除了同一个地址两次

以上是关于C++ new的时候,为啥会存在内存分配会失败的情况?啥导致的呢?的主要内容,如果未能解决你的问题,请参考以下文章

c++中为啥要用new 函数()实现多态?

set_new_handle

new和malloc的区别

C++ new int[0]——它会分配内存吗?

为啥连续调用 new[] 不分配连续内存?

C++中new出得对象与C中的malloc出得有啥联系和区别?