VC++里: int i; int *p=new int[10]; i=(int)p; ... p=(int *)i; delete p; 这样有问题吗?

classa{a();~a();int*i;int*m;intindex;voidb();voidc();}a::a(){index=0;}a::~a(){char*s;... class a
{
a();
~a();
int *i;
int *m;
int index;
void b();
void c();
}
a::a()
{
index=0;
}
a::~a()
{
char *s;
for(int j=0;j<index;j++)
{
if(m==1) (int *)s=(int *)i[j];
if(m==2) (char *)s=(char *)i[j];
delete s;
}
}
void a::b()
{
char *p=new char[10];
i[index]=(int)p;
m[index]=2;
index++;
}
void a::c()
{
int *q=new int[5];
i[index]=(int)q;
m[index]=1;
index++;
}
函数b()和c()可以根据需要调用多次,所以有这样的想法
展开
 我来答
手机用户33006
2011-09-23 · 超过26用户采纳过TA的回答
知道答主
回答量:189
采纳率:0%
帮助的人:111万
展开全部
C++的动态数组能“动”的只有其中一维,如果你非要new出个动态二维来,有三种方案: 1、固定第二维: int(*p)[20]=new int[m][20]; 用完后delete[] p; 2、分步分配: int**p=new int*[m]; for(int i=0;i<m;i++) p[i]=new int[n]; 用完后 for(int i=0;i<m;i++) delete[] p[i]; delete[] p; 3、标准模板库: #include<vector> using std::vector; vector< vector<int> > p; p.resize(m); for(int i=0; i<m; i++) p[i].resize(n); 用完后自动释放 三种方式都可以用p[i][j]来访问数组元素。 可以选择,可以参考一下。2011/9/23 17:26:47
匿名用户
2011-09-23
展开全部
C++的动态数组能“动”的只有其中一维,如果你非要new出个动态二维来,有三种方案:
1、固定第二维:
int(*p)[20]=new int[m][20];
用完后delete[] p;
2、分步分配:
int**p=new int*[m];
for(int i=0;i<m;i++)
p[i]=new int[n];
用完后
for(int i=0;i<m;i++) delete[] p[i];
delete[] p;
3、标准模板库:
#include<vector>
using std::vector;
vector< vector<int> > p;
p.resize(m);
for(int i=0; i<m; i++) p[i].resize(n);
用完后自动释放

三种方式都可以用p[i][j]来访问数组元素。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
琴秀曼Bp
2011-09-23 · TA获得超过690个赞
知道小有建树答主
回答量:615
采纳率:0%
帮助的人:668万
展开全部
有内存泄漏。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lf25625
2011-09-23 · 超过11用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:35.2万
展开全部
会有问题,不要这样做
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式