我正在这段代码上:

struct box
{
    char word[200][200];
    char meaning[200][200];
    int count;
};

struct root {
    box *alphabets[26];
};
root *stem;
box *access;
void init(){
     //cout<<"start";
    for(int i = 0 ; i<= 25; i++){
        struct box *temp =(struct box*)( malloc(sizeof(struct box)*100));
        temp->count = 0;
        cout<<temp->count;
        stem->alphabets[i] = temp;
    }
    //cout<<" initialized";
}

它已编译,没有错误,但是在执行过程中,它在将temp分配给stem->alphabets[i]的位置停止。如何解决这个问题?

最佳答案

stem设为struct而不是指针:

root stem; // No asterisk

否则,没有分配给它的内存,因此取消引用它是未定义的行为。

当然,您需要将stem->alphabets[i]替换为stem.alphabets[i]

关于c++ - 结构数组的内存分配错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18802185/

10-09 03:34