我的问题是关于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::string
或 std::vector<char>
;那么您就不必担心自己管理内存。
关于c++:我应该在什么时候开始使用 "new char[N]"与静态缓冲区 "char[Nmax]",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2932954/