我是 c 的新手,遇到以下问题:
执行这部分代码后
TypeDefStruct tdss[10];
for(...) {
TypeDefStruct *tds = (TypeDefStruct*)malloc(sizeof(TypeDefStruct));
strcpy(&tds->data, charPointerArray[index]) // works (not original code)
memcpy((void*) &tdss[index], (void*) &tds, sizeof(TypeDefStruct)); // new
free(tds); // new
}
这里发生错误
TypeDefStruct *tds = &tdss[0]; // worked before
printf("\twith input: \"%s\"\n", tds->data); // worked before
TypeDefStruct:
typedef struct TypeDefStruct{
char* data;
} TypeDefStruct;
错误 sigsagv 也发生在某个时候(不知道在哪里,可能根本不在这里......)
我想做什么
我正在尝试将此结构复制到数组中并正确管理我的内存。
请不要介意询问更多信息!
最佳答案
strcpy(&tds->data, charPointerArray[index]) // works (not original code)
data
是一个未初始化的对象,需要用malloc
分配一个数组。
另外&tds->data
参数是错误的,你需要使用tds->data
。
关于c struct指针数组分配sigsegv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30221642/