c - 带字符串赋值的数组对象指针会导致崩溃

标签 c arrays object pointers assignment-operator

所以我尝试将字符串值分配给数组中的对象。

目标代码是:

typedef struct BiTreeData_ {
    char* word;
    int start_word_count;
    int end_word_count;
    int start_ranking;
    int end_ranking;
} BiTreeData;

在我的 main 中,我使用以下方法创建了一个指向 BiTreeData 的指针数组:

BiTreeData **dataarray;
dataarray=(BiTreeData**)malloc(sizeof(BiTreeData*)*maintree.size);

我尝试使用以下方法为结构中的变量之一赋值:

int z = dataarray[i]->start_word_count;

程序崩溃了。任何帮助,将不胜感激。谢谢。

最佳答案

此处为您的代码

BiTreeData **dataarray;

dataarray=(BiTreeData*)malloc(sizeof(BiTreeData)*maintree.size);

BitTreeData* 数组分配内存空间,但您没有为 BitTreeData 对象本身分配任何空间。您只有一个指向未初始化内存的动态指针数组。

如果您只创建一个 BitTreeData 数组而不是指针数组,可能会容易得多。您可以通过使用来实现此目的

 BiTreeData *dataarray;
 dataarray=(BiTreeData*)malloc(sizeof(BiTreeData)*maintree.size);

这只是创建一个 BitTreeData 数组 - 然后您可以像访问任何其他数组一样访问数组中的每个项目(现在记住该数组是 BitTreeData 的,而不是BitTreeData*)

关于c - 带字符串赋值的数组对象指针会导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13315568/

相关文章:

Javascript 设置FullYear

c - C中的字符串操作

javascript - 如何将图表数据点与数组中的图表数据点进行匹配

php - 如何相应地对这些数组进行分组?

arrays - 在 Smalltalk 中对数组元素进行排序

javascript - 检查对象数组是否有 >1 个属性值 !== undefined

c - 如何重新分配字符串?

c - 使用 C 在客户端服务器上 read() write() 整数值

c++ - 二维指针初始化

我可以将字符串从二维数组复制到一维数组(数组和指针)