【发布时间】:2016-09-06 09:06:57
【问题描述】:
在我正在阅读的 c++ 代码中,发现以下内容。 谁能帮我理解以下语句的作用?
char buffer[4096];
// some code
int size = *(int*)(buffer);
【问题讨论】:
-
你知道
(int*)buffer是什么意思吗?如果没有阅读关于 casting 的内容。你知道一元解引用运算符*做了什么(例如,如果你有*some_pointer会发生什么)?如果没有读过。然后将每个主题的知识组合起来,就像它们组合成你想知道的表达方式一样。 -
此语句也可能导致某些架构的对齐异常。
-
这个语句也会导致未定义的行为。
-
它获取
buffer的地址,将其转换为int *,然后解除对结果指针的引用,这是未定义的行为。特别是,不能保证buffer在接受int边界上对齐。行为未定义。您不应尝试运行此代码。