gpt4 book ai didi

c++ - 当我0-初始化一个vector时,它和calloc有同样的效果吗?

转载 作者:行者123 更新时间:2023-11-30 03:41:33 25 4
gpt4 key购买 nike

因此 calloc 调用操作系统以检索堆上的零页面:https://stackoverflow.com/a/2688522/2642059

C++11 的 vector 构造函数怎么样,它只接受一个 size_t 和 0 初始化值?在一般情况下向操作系统询问归零页面,或者它是否需要初始化它自己,因为 vector 的元素可能是一个具有默认初始化程序的类,它将成员默认为非零值(value)?

最佳答案

std::vector<T>是实现的一部分,这意味着我们只能看到结果,不一定能看到幕后的魔法。此外,实现本身可能(部分)专门化 std::vector<T>只要可观察的结果保持不变。

然而,这并不意味着 std::vector<int>可以只向操作系统询问归零内存。还得经过std::allocator::operator new ,即使您更换了后者。

当然,根据编译器的魔法法则,如果编译器知道你没有,它仍然可能直接询问操作系统。但该逻辑的主要问题是单独编译。编译包含std::vector<int>的A.cpp时,编译器不会知道 B.cpp 包含 ::operator new .

关于c++ - 当我0-初始化一个vector时,它和calloc有同样的效果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37347434/

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