首页 > 代码库 > c++中new和delete的使用
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;//当然要释放一组了
c++中new和delete的使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。