【发布时间】:2018-07-22 22:00:32
【问题描述】:
我有以下几行代码: (其中 a 是 int64_t* 而 i 是一个简单的 int 计数器)
uintptr_t p = *a + (i * 4);
int64_t value = *reinterpret_cast<int64_t *>(p); //***
我已按照以下堆栈溢出帖子获取此语法: C++ - Get value of a particular memory address
问题是我在指示的行上不断出现分段错误。 我认为这可能与指针算术有关,但我不完全确定。有谁知道为什么我会在这里遇到段错误?
【问题讨论】:
-
显然计算的地址是错误的。
-
a究竟指向什么? -
当我说“你到底想做什么?”时,我想我和其他人的想法一样。
-
也许你的意思是
p = a + (i * 4) -
i*4 似乎真的很可疑。你知道 int64_t 有 8 个字节长吗?也许你应该使用 sizeof(int64_t)?