gpt4 book ai didi

c - 尝试设置取消引用的指针时出现段错误?

转载 作者:行者123 更新时间:2023-11-30 17:58:51 24 4
gpt4 key购买 nike

此代码在最后一行引发段错误。 header 是指向连续内存块的指针,该内存块全为 0,并且取消引用余数返回 0,这可能与该问题有关。我仍然觉得这应该可行,问题是什么?

void setHeader(void *header, size_t payload) {
size_t *remainder = (size_t*)((char *)header + (payload + 4));
*remainder = payload;
}

最佳答案

为什么你认为这应该有效?除非指向的对象足够大,以至于添加payload + 4不会超过对象的大小,否则指针算术具有未定义的行为。即使定义了算术(例如,如果对象大小恰好是 payload + 4),取消引用数组末尾之后的槽也会产生 UB。您需要确保您传递的地址的对象足够大,以便您的代码正常工作。

关于c - 尝试设置取消引用的指针时出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11918360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com