我对C有点精通,我认为我有指针都想通了,直到我遇到了这个问题。我正在创建一个数组实现的结构体堆栈。很简单,但当我的结构包含一个动态分配的数组时,我遇到了一个问题。每个包含动态数组的结构数组
的结构是:
typedef struct state {
int* S;
double prob;
} state_t;
现在说我希望创建的那些结构体10中,每个阵列具有一个整数数组的说5点的整数。我可以分配该数组为:
state_t *newContents;
newContents = (state_t *)malloc((sizeof(state_t) + 5 * sizeof(int)) * 10);
,我能创造一个struct在第一槽去:
state_t *root = malloc(sizeof *root + 5 * sizeof(int));
root->prob = 1.0;
root->S[0] = 3;
root->S[1] = 5;
root->S[2] = 7;
root->S[3] = 2;
root->S[4] = 0;
newContents[0] = *root;
但是,当我尝试添加第二个结构,赛格故障。这是因为数组索引的方式是没有int数组的结构体的大小,这意味着每个条目的长度为16个字节 - 8个为指针的双8个。我希望它可以通过28-8的双精度和4×5精度进行索引。有没有人知道一种方法来正确访问此数组的元素?
谢谢!
你是否检查'root's件的内容,您assigend值后他们?尤其要检查'prob'的值! – alk