所以我尝试将字符串值分配给数组中的对象。
目标代码是:
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/