我们使用下面的结构。
struct S
{
int i;
int *p;
};
主要流程:
int main()
{
S s;
int *p = &s.i;
p[0] = 4;
p[1] = 3;
printf("p[0]=%d\n", p[0]);
printf("p[1]=%d\n", p[1]);
s.p = p;
s.p[0] = 1;
s.p[1] = 2;
printf("p[0]=%d\n", p[0]);
printf("p[1]=%d\n", p[1]);
return 0;
}
然后当我们用Visual C++编译它时,我们的进程运行它在s.p[1] = 1中发生了内存错误。
但是我们用GCC编译它是可以运行的。
为什么在VC++中会出错,而GCC却不会?
最佳答案
p[1] = 3;
的行为未定义。
p
不是指向至少包含两个元素的数组。
关于c++ - 为什么结构中的指针在 Visual C++ 中会出现错误,而 GCC 却不会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48983804/