Realloc更改值,为什么?
我想把一个矩阵转换成简单的矩阵,在Realloc更改值,为什么?,c,C,我想把一个矩阵转换成简单的矩阵,在komsu中去掉0。在arkadas中,仅1个。但正如您所看到的,在realloc之后,值发生了变化。只有一个和第二个数组保持不变。就像使用malloc一样,当您调用realloc时,您应该将元素的数量乘以元素的大小(在这种情况下sizeof(int)您的代码不可读。请正确设置格式。问题在于您正在读取数组的末尾。从根本上说,您的问题不是代码不工作,而是无法进行编码。您不能这样继续。您没有成功的希望。您需要以清晰的结构化方式组织代码。您的分配到处都是。在您学会一些
komsu
中去掉0
。在arkadas
中,仅1
个。但正如您所看到的,在realloc
之后,值发生了变化。只有一个和第二个数组保持不变。就像使用malloc
一样,当您调用realloc
时,您应该将元素的数量乘以元素的大小(在这种情况下sizeof(int)
您的代码不可读。请正确设置格式。问题在于您正在读取数组的末尾。从根本上说,您的问题不是代码不工作,而是无法进行编码。您不能这样继续。您没有成功的希望。您需要以清晰的结构化方式组织代码。您的分配到处都是。在您学会一些基本的编程组织技能之前,您最好使用更高级的语言。谢谢大家。这是我的错误。除非是sizeof(char)
,这是多余的。备选方案:使用arkadas[i]=(int*)realloc(arkadas[i],x+1);
,乘以*目标的大小。更易于维护并避免sizeof(char)
问题:arkadas[i]=realloc(arkadas[i],(x+1)*sizeof*(arkadas[i]);
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)