gpt4 book ai didi

c++ - 建议的堆栈分配最大大小

转载 作者:IT王子 更新时间:2023-10-28 23:38:20 29 4
gpt4 key购买 nike

假设需要一个 固定大小 的缓冲区,是否有大小限制或阈值,这样在该大小限制下,可以使用快速堆栈分配的 std::array ,超过这个限制最好使用 std::vector 并从堆中动态分配内存(因为堆栈内存很宝贵,不应该消耗太多)?

// I think allocating 32 bytes on the stack is just fine.
std::array<BYTE, 32> smallBuffer;

// For 32KB, it's better getting memory from the heap.
std::vector<BYTE> bigBuffer(32*1024);

// Is it better to allocate a 1KB buffer on the stack (with std::array)
// or is it too much, and it's better to allocate on the heap (using std::vector)?
// What about 512 bytes? And 4KB?
// Is there a suggested size threshold?
std::array<BYTE, 1024> buffer;

最佳答案

没有官方限制。您可以增加或减少每个系统上的默认堆栈大小。

对于 Visual Studio 用户模式应用程序,堆栈大小的默认警告为 16 Kb1 Kb 在内核模式下。一些静态分析工具使用相同的警告限制。

warning C6262: Function uses '30000' bytes of stack: exceeds /analyze:stacksize'16384'. Consider moving some data to heap

https://learn.microsoft.com/en-us/cpp/code-quality/c6262

这只是一个警告,但可以将其视为建议的堆栈分配限制。

关于c++ - 建议的堆栈分配最大大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22882688/

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