当前位置: 技术问答>linux和unix
AIX机器上遇到的malloc问题
来源: 互联网 发布时间:2016-02-09
本文导语: 我在AIX 5.3的机器上写了一个程序,编译也通过了,但在运行时总是在一处地方core dump,如下程序 if(p->prcsz == NULL) { p->prcsz = (char**)malloc((sizeof(char*))); p->prcsz[0] = (char*)malloc(sizeof(char*) * 100); strcpy...
我在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函数时,程序执行中断了,这是什么问题,怎么解决呀!
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], "");
试试看,
不行楼下有高手:)
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);
{
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);