目录
C++ 程序的动态内存管理非常复杂,容易出现缺陷。常见的与内存管理相关的编程缺陷,包括未能正确处理分配失败,解引用空指针,写入已经释放的内存,多次释放相同的内存,不当配对的内存管理函数,未区分标量和数组,以及分配函数使用不当。
1.未能正确检查内存分配失败
下面的代码fail部分不会执行,new 运算符要么返回成功或者抛出一个异常,else 语句永远不会执行。
int* ip = new int;
if (ip)
{
std::cout << "pass" << std::endl;
}
else
{
std::cout << "fail" << std::endl;
}
可以使用new 的nothrow 形式,分配失败返回一个空指针
int* k = new (std::nothrow) int ;
2.不当配对的内存管理函数
C++ 和c 使用不同的内存管理函数,但是很多人在写代码的时候会混用c和C++ 。如果使用的时候没有注意就会发生错误的配对,C++ 中应该使用new 和delete ,以及new[],C 中使用malloc 和fre


3405

被折叠的 条评论
为什么被折叠?



