这里有一个结构:
typedef struct Memo
{
// dynamically allocated HugeInteger array to store our Fibonacci numbers
struct HugeInteger *F;
// the current length (i.e., capacity) of this array
int length;
} Memo;
这是Memo结构中的结构HugeInteger*:
typedef struct HugeInteger
{
// a dynamically allocated array to hold the digits of a huge integer
int *digits;
// the length of the array (i.e., number of digits in the huge integer)
int length;
} HugeInteger;
我的问题是,如何访问Memo结构中Hugeinteger结构中的数字数组的成员?
在我的代码中,我对这三个都进行了类似的mallocated:
Memo *newMemo = malloc(sizeof(Memo));
newMemo->F = malloc(sizeof(HugeInteger) * INIT_MEMO_SIZE); //in this case 44
for (i = 0; i < INIT_MEMO_SIZE; i++)
{
newMemo->F[i].digits = malloc(sizeof(int*) * 1); //creating an array of size 1 to test
newMemo->F[i].digits = NULL;
newMemo->F[i].length = 0;
}
例如,我尝试过。。。
newMemo->F[i].digits[0] = 1;
这导致分割故障。如何正确地实现上面的代码行?我真的觉得我错过了一些重要的东西。谢谢
这里有一个问题:
newMemo->F[i].digits = malloc(sizeof(int) * 1); //creating an array of size 1 to test
newMemo->F[i].digits = NULL;
(除了我修复的语法错误之外,我认为这是一个复制/粘贴错误)上面的第二行将刚才分配的内存地址替换为NULL。所以当你这样做的时候:
newMemo->F[i].digits[0] = 1;
您正在写入一个空地址。
您希望省略NULL赋值。