c++ 动态分配指针释放的问题

2025-01-08 07:42:28
推荐回答(4个)
回答1:

int* SomeFunction()
{
int *pPointer;
pPointer = new int;
*pPointer = 25;
return pPointer;
}
因为这个函数的返回值是int类型的pPointer指针,而这个指针就指向你分配的内存首地址,
pPointer = new int;从这里可以看出来,
释放内存时候,只需要知道你分配内存的首地址就行了,而这个例子里面是可以得到SomeFunction()函数分配的内存的首地址的,所以可以在SomeFunction这个函数外释放内存。

回答2:

动态分配的内存是在堆上分配的,在堆上分配的内存生命周期是不受现于作用域的。你只要存好动态分配的内存就行了,在使用结束后delete就是了。如果不delete就会造成内存泄露。delete后记的把指针赋值为0,因为delete只是把会把所分配的内存交换系统。并不把指针赋0。

回答3:

main函数中释放的是你在中main函数定义的int *pPointer;并不是SomeFunction()动态分配的内存

回答4:

因为只要是通过new分配的内存,他都必须通过delete来释放,只要指向了这块内存,都可以释放(在同一个线程 )。不仅可以在main在释放,也可以在其它你写的函数中释放,一定要指向它才行。