使用 MINGW 编译器在 Visual Studio 代码上运行此代码,结果出现分段错误
#include <iostream>
using namespace std;
int main()
{
int *b;
*b = 20;
}
答案 0 :(得分:1)
您的代码具有未定义的行为。 b
未初始化,它没有指向任何有意义的地方。因此,取消引用 b
将导致随机内存地址,写入该内存会使您的程序崩溃(但这不能保证,您可能只会损坏内存)。
您需要将 b
指向有效的 int
,例如:
int main()
{
int i;
int *b = &i;
*b = 20; // writes to i
}
答案 1 :(得分:0)
你的第一个 Line 定义器是一个指向 int 的指针,没有设置它指向的位置,所以它可以指向任何地方。
您的第二行将数字 20 写入 b 恰好指向的内存位置,在您的情况下,这是导致分段错误的内存位置。
你想要的是 int *b = new int();为指针分配一个有效的内存位置。