我正在尝试以下方法为key赋值,这是stuct的一部分。 Key是指向char的指针。
T->oa[i].key = (char*)malloc(5*(sizeof(char)));
strcpy(T->oa[i].key,"abc");
当我运行它时,我在strcpy行上遇到了一个seg错误。这里发生了什么?感谢。
答案 0 :(得分:1)
代码段可能导致问题的唯一方法是malloc
实际上失败(返回NULL
)。
除此之外,应该没有问题。任何可能失败的调用都应该被检查,如果失败可能导致以后出现问题,那么内存分配后再取消引用该内存肯定属于该描述。
更好的解决方案是:
T->oa[i].key = malloc(5);
if (T->oa[i].key == NULL)
doSomethingIntelligent();
else
strcpy(T->oa[i].key, "abc");
您会注意到我还更改了malloc
电话。在C中,从malloc
投出返回值很少是个好主意:
void *
可以隐式强制转换为任何其他指针;和此外,从不需要乘以sizeof(char)
,因为根据定义,它总是一个。