首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++动态创建与删除数组有关问题

2012-08-26 
c++动态创建与删除数组问题C/C++ code//创建一个指针数组,我们可以这样做。#include iostreamusing names

c++动态创建与删除数组问题

C/C++ code
//创建一个指针数组,我们可以这样做。#include <iostream>using namespace std;void main(){ char*a=new char[10];//动态数组的创建。    delete []a;//动态数组的删除。}//那么问题来了。下面我创建两个指针数组,或者三个,或者更多。#include <iostream>using namespace std;void main(){ char*a=new char[10];char*b=new char[9];}//我想在一个语句中同时释放2个指针所指的内存,那么我用什么表达方式来释放?


[解决办法]
delete []a;delete []b;//真不知道该怎么评价这个诡异的要求
[解决办法]
使用一句话释放两个指针, 这不可能.
因为 指针a和指针b所指向的内存都是单独分配的, 操作系统的内存管理机制已经决定了,你想要的不能实现.
new了两次,那么你就得delete两次.

当然,你使用循环之类的来释放, 如果循环中的那一句,也算一句的话, 那到是可行.

比如有 char *p[2];
p[0] = new char[10];
p[1] = new char[20];
for(int i=0;i<2;++i)
{
delete [] p[i];
}

[解决办法]
据测试delete []a,b;执行后b的空间没有被释放。

那道题可以把两句写在一行。
[解决办法]
探讨

引用:
代码是用来交流的,不是为了秀技术。两句比一句可靠,易读,无歧义,就最好!

由于要考国二C++,所以做了个模拟机试题,非要1条语句同时删除2个指针,给的答案就是delete []a,b;
到底有没有可能在某种情况下这样的语句能同时删除两个数组?

[解决办法]
脑惨的考试

热点排行