【发布时间】:2018-09-18 09:19:55
【问题描述】:
我正在学习 C 和 C++。 在这个程序中:
#include <iostream>
int main() {
const int g = 10;
int * k = reinterpret_cast <int *> (20000); //ok
std::cout << "k : " << k << std::endl;
std::cout << "* k : " << * k << std::endl;
* k = g;
std::cout << "* k : " << *k << std::endl;
return 0;
}
./converForTyEn
k : 0x4e20
分段错误(核心转储)
我预计是 20000,然后是 10。但似乎错误是“意味着您试图访问您无权访问的内存”。 (埃尔西·芬恩)。 感谢您的帮助。
【问题讨论】:
-
k指向内存地址20000,你的程序不允许访问这个地址,因此运行时停止它。 -
好的,谢谢你的解释。
-
不要将 C 与 C++ 混淆,它们是两种不同的语言。我不太了解 C,但是除了极少数例外,您的代码不是有效的 C(例如
return 0;您也可以用 C 编写;)