|
|
1
19
来自: http://www.sgi.com/tech/stl/alloc.html
|
|
|
2
13
这实际上是Alexandrescu用标准分配器指出的一个设计缺陷(不是operator new[]/delete[],而是最初用于实现std::vector的stl分配器,例如)。 重新分配比malloc、memcpy和free发生得更快。然而,虽然实际内存块可以调整大小,但它也可以将内存移动到新的位置。在后一种情况下,如果内存块由非pods组成,则需要销毁所有对象,并在重新分配后进行复制构造。 标准库需要将其作为 可能性 是作为标准分配器公共接口的一部分的重新分配函数。像std::vector这样的类当然可以使用它,即使默认实现是malloc新大小的块并释放旧块。它需要一个能够破坏和复制内存中的对象构造的函数,但是如果它这样做了,就不能以不透明的方式处理内存。这里有一点复杂,需要更多的模板工作,这可能就是为什么它被从标准库中省略的原因。 std::vector<…>::reserve不够:它处理了一个不同的情况,在这种情况下可以预期容器的大小。对于真正可变大小的列表,realloc解决方案可以使std::vector等连续容器更快,特别是当它可以处理内存块成功调整大小而不移动的realloc情况时,在这种情况下,它可以忽略为内存中的对象调用复制构造函数和析构函数。 |
|
|
3
8
你所要求的基本上是什么
|
|
|
4
3
由于C++的面向对象性质和各种标准容器类型的包含,我认为简单地说,在方向记忆管理上比在C.上放置较少的焦点,我同意RealCuffor()的情况是有用的,但是补救这一点的压力是最小的,因为几乎所有的最终功能都可以。用容器代替。 |
|
|
5
2
我想这是上帝出错的原因之一,但我太懒了,没法写信给标准委员会。 数组分配应该有重新分配:
或者类似的。 |
|
|
altair00 · 使用“realloc”调整现有阵列的大小` 3 年前 |
|
|
Ben Osborne · C增加字符数组的字符数组大小 8 年前 |
|
|
SonicN · realloc调用中的写入无效[已关闭] 8 年前 |
|
|
Nabila K · realloc:返回损坏的数据 8 年前 |
|
|
MortalMan · 在不同函数中malloced的Realloc指针 10 年前 |
|
|
begginer3 · 为什么这行不通?动态内存初学者程序 10 年前 |
|
|
Hawk · 通过动态分配空间在套接字上执行recv() 10 年前 |