c struct指针数组分配sigsegv

c struct pointer array allocate sigsegv

我是 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 是类型定义的结构,我们不需要 &。至少我是这么认为的...