当我扩展数组时,列表数组的前两个值变为 NULL
The first two values of an array of lists become NULL when i expand the array
我有一个列表数组,我想在 size.I 使用 realloc 时加倍,当我开始填充新数组元素时,起始元素开始变为 NULL,我无法更改它们的值。
int x;
Heads=realloc(Heads, TABLESIZE * sizeof(struct HTLink));
S=realloc(S, TABLESIZE * sizeof(HTHash));
for(x=TABLESIZE;x<TABLESIZE*2;x++)
{
S[x]=(HTNode *)malloc(sizeof(HTNode));
S[x]->Key=EmptyKey;
S[x]->Next=NULL;
Heads[x]=*S[x];
}
TABLESIZE*=2;
return S;
在我运行这段代码之后S[2]及以上的值是正常的但是S[0]和S[1]是NULL
您对 realloc
的第二个参数是什么感到困惑:
void* realloc (void* ptr, size_t size);
size
: New size for the memory block, in bytes.
您正在这样做:
S=realloc(S, TABLESIZE * sizeof(HTHash));
for(x = TABLESIZE; x < TABLESIZE * 2; x++)
这表明您认为 realloc()
将通过第二个参数扩展数组的大小。将其更改为:
S=realloc(S, 2 * TABLESIZE * sizeof(HTHash));
我有一个列表数组,我想在 size.I 使用 realloc 时加倍,当我开始填充新数组元素时,起始元素开始变为 NULL,我无法更改它们的值。
int x;
Heads=realloc(Heads, TABLESIZE * sizeof(struct HTLink));
S=realloc(S, TABLESIZE * sizeof(HTHash));
for(x=TABLESIZE;x<TABLESIZE*2;x++)
{
S[x]=(HTNode *)malloc(sizeof(HTNode));
S[x]->Key=EmptyKey;
S[x]->Next=NULL;
Heads[x]=*S[x];
}
TABLESIZE*=2;
return S;
在我运行这段代码之后S[2]及以上的值是正常的但是S[0]和S[1]是NULL
您对 realloc
的第二个参数是什么感到困惑:
void* realloc (void* ptr, size_t size);
size
: New size for the memory block, in bytes.
您正在这样做:
S=realloc(S, TABLESIZE * sizeof(HTHash));
for(x = TABLESIZE; x < TABLESIZE * 2; x++)
这表明您认为 realloc()
将通过第二个参数扩展数组的大小。将其更改为:
S=realloc(S, 2 * TABLESIZE * sizeof(HTHash));