c++动态创建与删除数组有关问题
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的空间没有被释放。
那道题可以把两句写在一行。
[解决办法][解决办法]脑惨的考试