cout<<"行"; cin>>x; cout<<"列"; cin>>y; char *a = new char[x * y]; char *p[y]; for (int i = 0; i < x; i ++) p[i] = &a[i * y];
char *p = new char[n*m];
agree to pomelowu(羽战士)
嗯~~还要改改~~~有点小错误: cout << "行"; cin >> x; cout << "列"; cin >> y; char *a = new char[x * y]; char **p = new char*[y]; for (int i = 0; i < x; i ++) p[i] = a + (i * y); 最后,完了记得要 if (p) for (i = 0; i < y; i ++) { delete [] p[i]; p[i] = 0; } p = NULL; if (a) delete a;
C语言换成malloc 和 free就是了: char *a = (char *)malloc(sizeof(char) * x * y); char **p = (char **)malloc(sizeof(char *) * y); for (int i = 0; i < x; i ++) p[i] = a + (i * y);
if (p) for (i = 0; i < y; i ++) { free(p[i]); p[i] = 0; } p = NULL; if (a) free(a); ===================================== 我在VC6下运行会出错,怎么回事呀?
小弟终于明白了,多谢pomelowu(羽战士),可否将MSN或者泡泡或者QQ号留给小弟?
汗~~~是我写的问题: delete应该这样写: if (p) { delete [] p; p = NULL; } if (a) { delete [] a; a = NULL; }free应该这样写: if (p) { free(p); p = NULL; } if (a) { free (a); a = NULL; }
cin>>x;
cout<<"列";
cin>>y;
char *a=new char[x][y];
cin>>x;
cout<<"列";
cin>>y;
char *a = new char[x * y];
char *p[y];
for (int i = 0; i < x; i ++)
p[i] = &a[i * y];
cout << "行";
cin >> x;
cout << "列";
cin >> y;
char *a = new char[x * y];
char **p = new char*[y];
for (int i = 0; i < x; i ++)
p[i] = a + (i * y);
最后,完了记得要
if (p)
for (i = 0; i < y; i ++)
{
delete [] p[i];
p[i] = 0;
}
p = NULL;
if (a)
delete a;
char *a = (char *)malloc(sizeof(char) * x * y);
char **p = (char **)malloc(sizeof(char *) * y);
for (int i = 0; i < x; i ++)
p[i] = a + (i * y);
for (i = 0; i < y; i ++)
{
free(p[i]);
p[i] = 0;
}
p = NULL;
if (a)
free(a);
=====================================
我在VC6下运行会出错,怎么回事呀?
delete应该这样写:
if (p)
{
delete [] p;
p = NULL;
}
if (a)
{
delete [] a;
a = NULL;
}free应该这样写:
if (p)
{
free(p);
p = NULL;
}
if (a)
{
free (a);
a = NULL;
}