c struct指针数组分配sigsegv

标签 c arrays pointers struct segmentation-fault

我是 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/

相关文章:

c++ - scanf() 奇怪的行为!

c# - 在 C# 中有效地从二维数组中提取向量

传递给函数时的 C++ 指针问题

string - 如何将 D 中的 char* 转换为字符串?

c - 这个指针实际上指向哪里?

c - 堆排序 - C 编程

无法在 gcc 中使用全局变量

java - 字符数组隐藏密码jdbc

javascript - 在 React 中的 .map 迭代中的单个元素上使用 onMouseEnter

c - 如何打印一个巨大的数字?