gpt4 book ai didi

c - 不同电脑上结果不同

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

我的以下代码有问题:

#include <stdlib.h>
#include <stdio.h>
void red(int *);
int main()
{
int *wsk,i;
wsk = (int*)malloc(10*sizeof(int));
for(i=0;i<10;i++)
{
wsk[i]=i+100;
printf("value: %d num pointer:%p \n",wsk[i],wsk+i);
}

printf("\n\n");
red(wsk);
printf("\n\n");
for(i=0;i<11;i++)
{
printf("value: %d num pointer:%p \n",wsk[i],wsk+i);
}
free(wsk);
return 0;
}
void red(int* wsk)
{
int i;
wsk = realloc(wsk,11*sizeof(int));
for(i=0;i<11;i++)
{
printf("value: %d num pointer:%p \n",wsk[i],wsk+i);
}
}

在学校计算机上,此代码可以运行,并且函数 red 中的 wsk 指针与 main 中的相同。当我在不同的计算机上运行相同的代码时,我会得到不同的结果

我的计算机的结果:

in my computer

另一台计算机的结果:

other computer

最佳答案

重新分配的地址仅保留在红色函数范围内。然后取消引用旧指针。

void red(int** wsk)
{
int i;
*wsk = realloc(*wsk,11*sizeof(int));
...
}

关于c - 不同电脑上结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50358298/

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