日期:2014-05-16  浏览次数:20796 次

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);