gpt4 book ai didi

c++ - 生命周期短的分配会导致堆碎片吗?

转载 作者:行者123 更新时间:2023-11-28 00:57:45 25 4
gpt4 key购买 nike

假设我有以下内容:

std::string TestFragmentation()
{
std::vector<char> buffer(500);
SomeCApiFunction( &buffer[0], buffer.size() ); // Sets buffer to null-terminated string data
return &buffer[0];
}

上述在堆上分配内存的 vector 是否会导致内存碎片?我对碎片化的理解是,只有在更大、更短生命周期的分配之间有小的、长期的分配(反之亦然)时,它才会真正发生。

我不想过早地优化这种情况,所以我想听听大家对这样的代码应该怎么看。我知道很多专家不建议在堆栈上放置大缓冲区(毕竟堆就是用来干这个的),所以当我写这样的代码时,通常首先想到的就是这个。碎片通常是需要分析的东西。我在这里应该是什么心态?

最佳答案

如果这是表达此代码功能的最自然方式,那么您应该这样做。除非您有非常不寻常的情况没有告诉我们,否则内存碎片甚至不应该出现在您的雷达屏幕上。

关于c++ - 生命周期短的分配会导致堆碎片吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10181114/

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