gpt4 book ai didi

c - 在这种情况下如何分配内存?

转载 作者:太空宇宙 更新时间:2023-11-03 23:32:39 24 4
gpt4 key购买 nike

我在 main 中有一些指针,但我不知道它的大小。函数将此指针返回给 main。在函数内部,我可以计算指针的大小,因此需要在其中存储值并将它们返回给 main。在这种情况下如何修改/分配内存。

int main()
{
int *row_value, *col_value;
col_row_value(row_value,col_value);
...
return(0);
}

void col_row_value(row_value,col_value)
{
// how to allocate/modify memory for row_value and col_value and store data
// for example would like to allocate memory here
int i;
for(i=0;i<10;i++) {
row_value[i]=i;
col_value[i]=i;
}
}

我试过这样的方法,它不起作用

int main()
{
int *row_value, *col_value;
row_value=NULL;
col_value=NULL;
col_row_value(&row_value,&col_value);
...
return(0);
}

void col_row_value(int **row_value,int **col_value)
{
// how to allocate/modify memory for row_value and col_value and store data
// for example would like to allocate memory here
int i;
*row_value=(int*)realloc(*row_value,10*sizeof(int));
*col_value=(int*)realloc(*col_value,10*sizeof(int));
for(i=0;i<10;i++) {
row_value[i]=i;
col_value[i]=i;
}
}

最佳答案

这个:

*row_value=(int*)realloc(row_value*,10*sizeof(int));

应该是:

*row_value = realloc(*row_value,10*sizeof(int));
/** ^ **/

注意强制转换是不必要的。将 realloc() 的结果分配给一个临时指针,以防重新分配失败,这意味着原始内存将无法访问。

int* tmp = realloc(*row_value, 10 * sizeof(*tmp));
if (tmp)
{
*row_value = tmp;
}

请注意 for 循环不会为 row_valuecol_value 中的第一个元素赋值:

for(i=1;i<10;i++)

因为它从索引 1 开始并且 for 中的赋值应该是:

(*row_value)[i] = i;
(*col_value)[i] = i;

关于c - 在这种情况下如何分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12313754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com