C结构指针阵列分配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是一种定义的结构,因此我们不需要&。至少我这么认为...

相关内容

  • 没有找到相关文章

最新更新