C++内存释放问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 17:52:28
int* iPtr = new int(3);
char* cPtr = (char*) iPtr;
delete cPtr; //是否可以正确释放内存

使用new分配的是堆内存,堆内存在c++语法中的规定是:谁分配谁释放,也就是说用户自己分配了内存,那么 用户必须要手动释放这些内存,也就是必须调用delete,然后再赋值为NULL(这个的主要作用是防止出现野指针)
例如: int * i = new int;
delete i;
i = NULL;
必须这样使用,才不会出现内存泄露和野指针.

MS 可以。。

不行,new int(3),是错误的,是java的用法,c++中new一个数组用的是new int[3];delete时,应该是delete[] cPtr;
另外如果仅仅是指针,这样释放是对的