就五行代码,我整不明白了。
在x86环境下,可以打印333,并且正常结束
但是,在x64环境下,代码会崩溃
我的编译器:Visual Studio 2022
#include
#include
int* Test1()
{
int* src = (int*)malloc(sizeof(int));
*src = 333;
return src;
}
int main()
{
int* ptr = Test1();
printf("%d\n", *ptr);
return 0;
}
在64位环境下,执行了Test1函数后,ptr仿佛六亲不认,成了一个野指针。
但在32位环境下相安无事。
不改变main函数的情况下,让代码打印333并且正常结束。
Test函数必须用动态内存申请空间。
仅使用C语言。
你看看你的编译器参数。
我用gcc 64 和vc2022都正常
应该是引用指针不用时要释放掉吧,试试看。
int main()
{
int *ptr = Test1();
printf("%d\n", *ptr);
free(ptr);
return 0;
}
代码应该没有问题,你先把报错发出来吧