c++中new和delete的使用

       new/ delete 的使用(仅限于c++,注意,new、delete不是函数而是操作符!注意与c中的malloc和free区分)编程的时候经常要用到堆内存的分配,通常使用的操作符是new,这个时候就必然要用到delete去释放申请的内存空间。

此时至少要遵循以下原则:
(1)new和delete是成对出现的。只出现一个是错误的或不规范的写法,即使能编译通过,也会有安全隐患;
(2)使用的new与delete要相同。也就是说如果你在 new表达式中使用了 [],你必须在对应的 delete 表达式中使用 []。   如果你在 new 表达式中没有使用 [],你也不必在对应的 delete 表达式中使用 []。
(3)对一个指针只能使用一次运算符delete;
 
例:
printf("-------- 使用 new/ delete 情况 ---------------\n");
string *p1=new string("123");//p1申请了一个空间
printf("<%s>\n", p1->c_str());
delete p1;//释放的时候释放一个就可以了
printf("-------- 使用 new[] / delete[] 的情况 ---------------\n");
int i;
string* p2 = new string[5];//p2申请了一组空间
for ( i=0; i< 5; i++ )
{
p2[i].assign("123");
}
for( i=0; i< 5; i++ )
{
printf("%d:%s\n", i, p2[i].c_str());
}
delete [] p2;//当然要释放一组了

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。