gpt4 book ai didi

c - 重新分配会改变值,为什么?

转载 作者:行者123 更新时间:2023-11-30 21:18:25 24 4
gpt4 key购买 nike

int **arkadas;
int **komsu;

komsu = malloc( t*sizeof( int* ));
arkadas = malloc( t*sizeof( int* ));

for(i=0; i<t; i++)
{
x=0;
komsu[i] = malloc( t*sizeof(int) );
arkadas[i] = malloc( t*sizeof(int) );//temporary malloc

for(j=0; j<t; j++)
{
komsu[i][j]=fark(kelime[i],kelime[j]);
if(komsu[i][j]==1)
{
komsuSayisi++;
x++;
arkadas[i][x]=j;
}
}
if(i==2)
{
printf("1. value: %d\n",arkadas[2][2]);
}
arkadas[i][0]=x+1;//size here
if(i==2)
{
printf("2. value: %d\n",arkadas[2][2]);
}
arkadas[i] = (int *)realloc(arkadas[i],x+1);
if(i==2)
{
printf("3.value: %d\n",arkadas[2][2]);
}
}

输出如下:

1. value: 150
2. value: 150
3. value: 13243564 (after realloc)

我想将一个矩阵转换为简单矩阵,并丢失komsu中的0。在 arkadas 中只有 1 个。但正如您所看到的,在 realloc 值发生变化之后。数组中只有一个和第二个保持不变。

最佳答案

就像malloc一样,当您调用realloc时,您应该将元素数量乘以元素的大小(在本例中为sizeof(int) .

关于c - 重新分配会改变值,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24128740/

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