gpt4 book ai didi

c++:我应该在什么时候开始使用 "new char[N]"与静态缓冲区 "char[Nmax]"

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:08:57 24 4
gpt4 key购买 nike

我的问题是关于C++的

假设我编写了一个函数来将项目列表返回给调用者。每个项目都有 2 个逻辑字段:1) 一个 int ID,和 2) 一些大小可能不同的数据,比方说从 4 字节到 16Kbytes。所以我的问题是是否使用像这样的数据结构:

struct item {  int  field1;  char field2[MAX_LEN];

或者,更确切地说,从堆中分配 field2,并要求调用者在完成后销毁:

struct item{  int  field1;  char *field2;  // new char[N] -- destroy[] when done!

因为字段#2 的最大大小很大,所以从堆中分配是合理的,对吧?因此,一旦我知道大小 N,我就会调用 field2 = new char[N],并填充它。

现在,这效率低得可怕吗?

在 N 总是很小的情况下是否更糟,即假设我有 10000 个 N=4 的项目?

最佳答案

您应该改为使用标准库容器之一,例如 std::stringstd::vector<char> ;那么您就不必担心自己管理内存。

关于c++:我应该在什么时候开始使用 "new char[N]"与静态缓冲区 "char[Nmax]",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2932954/

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