AIX机器上遇到的malloc问题
我在AIX 5.3的机器上写了一个程序,编译也通过了,但在运行时总是在一处地方core dump,如下程序
if(p->prcsz == NULL)
{
p->prcsz = (char**)malloc((sizeof(char*)));
p->prcsz[0] = (char*)malloc(sizeof(char*) * 100);
strcpy(p->prcsz[0], "");
}
在执行到malloc函数时,程序执行中断了,这是什么问题,怎么解决呀!
------解决方案--------------------p- >prcsz = (char**)malloc((sizeof(char*)));
p- >prcsz[0] = (char*)malloc(sizeof(char*) * 100);
strcpy(p- >prcsz[0], "");
改
p->prcsz = (char**)malloc((sizeof(char*)));
if(!p- >prcsz) exit(1);
p->prcsz[0] = (char*)malloc(sizeof(char) * 100);
if(!p->prcsz[0]) exit(1);
strcpy(p->prcsz[0], "");
试试看,
不行楼下有高手:)
------解决方案--------------------检查一下prcsz的类型,看是不是char **类型,如果不是二维指针类型,就会出错.
还有,楼上说的也对,分配完空间后,检查一下返回值,看是否分配成功.
------解决方案--------------------if(p- >prcsz == NULL)
{
p- >prcsz = (char**)malloc((sizeof(char*)));
p- >prcsz[0] = (char*)malloc(sizeof(char*) * 100);
strcpy(p- >prcsz[0], "");
}
第二个malloc错误吧?
p->prcsz[0] = (char *)malloc(sizeof(char) *100);