gpt4 book ai didi

c++ - 具有零计数和无效指针的 std::memset

转载 作者:行者123 更新时间:2023-12-05 01:22:13 25 4
gpt4 key购买 nike

count 等于 0?

最佳答案

不,那会导致未定义的行为。例如:

void* p = get_address(); // may return null
size_t sz = get_size(); // zero if previous returned null

memset(p, 0, sz); // Compiler may assume that p is not null

if (p) { // this null-check can be omitted since we "know" p is not null
foo(p);
}

事实上,如果您查看 code generated by GCC :

main:
push rbx
call get_address()
mov rbx, rax
call get_size()
mov rdi, rbx
xor esi, esi
mov rdx, rax
call memset
mov rdi, rbx
call foo(void*) ; <-- unconditional call
xor eax, eax
pop rbx
ret

你可以看到“if”分支被省略了。

关于c++ - 具有零计数和无效指针的 std::memset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74378225/

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