当我们在使用 C++ 时,经常使用 new
和 delete
这两个运算符来进行动态内存的分配和释放。而这两个函数必须要配对使用。
为什么要匹配使用new和delete
在使用 new 分配内存时,系统会分配一块合适大小的内存空间,并返回一个指向该空间的指针。这时如果使用 delete 将该指针所指向的内存释放掉,但是如果后续仍然有程序对该指针进行操作,就会出现程序崩溃等错误。
例如在下面的代码中,用 new 来分配了一个 char 型指针变量,再使用 delete 将这个指针所指向的内存释放。
char *pStr = new char[10];
delete pStr;
如果此时再假设代码有以下片段:
pStr[0] = 'h';
那么代码就会发生不可预知的错误,因为该指针所指向的内存已经被释放掉了。因此,我们在使用 new 和 delete 时必须要匹配使用。
另一个示例是前面提到的在分配 size 个对象时使用数组形式的 new。下面给出一个代码示例:
int size = 100;
int *pArr = new int[size];
delete pArr;
在释放指针所指向内存时使用的是 delete 单词,而这里序号为 100,说明分配的是用数组形式的 new 分配,对应的释放方式是 delete[] 。
总结
在C++ 中,new 和 delete 都是动态内存分配和释放的运算符,它们必须要成对使用,否则会导致错误和内存泄漏的问题。而且在使用数组形式 new 时,一定要使用数组形式的 delete 进行释放。在代码中必须要注意细节问题,规范使用 new 和 delete 是编写 C++ 程序一个不可缺少的环节。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:你知道C++中new和delete为什么要匹配使用吗 - Python技术站