我是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
。
在我的情况下,这并不能解决我的所有错误。也不是sigsegv。
但是
中存在语法错误 memcpy((void*) &tdss[index], (void*) &tds, sizeof(TypeDefStruct));
!
由于tds
是一种定义的结构,因此我们不需要&
。至少我这么认为...