C++ new & delete

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ new & delete相关的知识,希望对你有一定的参考价值。

前天偶然将一段在 Win 6.0 的代码,放在 PC 上运行。

可结果出人意科,Debug 时“居然”弹框提示错误。所以将代码拿出来,对比 MSDN 来看看。

 

代码片段1: ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/dv_vccrt/html/4ae51618-a4e6-4172-b324-b99d86d1bdca.htm

1 int * i = new int(6);
2 printf("%d\n", *i);
3 delete i;

代码片段2:
ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/dv_vclang/html/de39c900-3f57-489c-9598-dcb73c4b3930.htm

1 int* set = new int[100];
2 //use set[]
3 delete [] set;
4 // 5 CDialog* MyDialog = new CDialog;
6 // use MyDialog
7 delete MyDialog;

如果这样使用会有什么样的结果:

1 char *pcFloat = new char(iLen + 1);
2 // user pcFloat
3 delete[] pcFloat;

说明: 都使用 VS2008 编译:
(1) 在 WinCE 6.0 环境下编译运行都没有出现问题;
(2) 在 PC 上编译是没有问题,运行到 delete 语句时出错。

以上是关于C++ new & delete的主要内容,如果未能解决你的问题,请参考以下文章

C++初阶:内存管理C/C++内存分布及管理方式 | new/delete实现原理及operator new和operator delete函数

malloc vs new && delete vs delete[]

处理类 new 和 delete 运算符 C++ 中的内存泄漏

什么是“::operator new”和“::operator delete”?

C++ 中的 new/delete 导致奇怪的内存泄漏

C++内存管理 && 读高质量C++/C编程指南第7章