大家帮我看看这个程序啊,十分着急.谢谢.

2024-11-24 20:49:53
推荐回答(1个)
回答1:

定义:
struct Abc
{
int iTop,iLeft,iRight,iButtom;
char *pChar[10];
} //1.这里漏了分号
实现:
Abc *pAbc[10];
char str[10];
for(int I;I<=10;I++)//2.这里的I没有初值,应赋值0,还有,C/C++语言的话,不能用等号,因为下标从0开始
pAbc[I] = new Abc;
strcpy(str,”1234567890”); //3.str的空间只有10,你这里赋了10个字符,再加上一个结束符\0就溢出了;还有""应该用英文引号
pAbc[1]->pChar[1] = new char(10); //4.动态分配一个字符,值为10
pAbc[1]->pChar[1] = str; //5.将str的地址赋值给pAbc[1]->pChar[1], 因为是静态分配的内存,覆盖了4.的动态分配, 所以后面的 delete pAbc[1]->pChar[1]; 会出错,而且这样做的话会导致4.的动态分配的内存泄漏,无法再找到
printf(“%s,%s”, pAbc[1]->pChar[0],pAbc[1]->pChar[1]);
delete pAbc[1]->pChar[1]; //见第5点
for(int I;I<=10;I++)//6.这里的I还是忘了赋初值,还是用了等号,还有,如果用的是VC++编译器,它会说你I重定义(其实语法上是允许的,这是VC的bug),最好改成J
delete pAbc[I];