gpt4 book ai didi

c - 在 C 中放置新的等价物

转载 作者:太空狗 更新时间:2023-10-29 15:46:03 26 4
gpt4 key购买 nike

C 中是否存在与 C++ placement new 等效的方法?我的意思是,可以在 C 中的指定位置构造一个对象吗? realloc() 可以用于那个吗?

最佳答案

Placement new 简单地跳过分配并在预分配的内存中构造一个对象。由于 C 缺少构造函数,因此不需要放置 new。我想等效项是指针类型转换,因为一旦有了指针,就可以像存在对象一样操作。

从公共(public)内存池中雕刻不同类型对象的示例:

char *pool = (char *) malloc( 1000 );
char *pen = pool;

foo *obj1 = (foo *) pen;
pen += sizeof (foo);

bar *obj2 = (bar *) pen;
pen += sizeof (bar);

/* etc */

当然,在执行此操作时,您负责将正确的指针传递给 free,并注意对齐要求——就像 C++ 中的 placement new 一样。

关于c - 在 C 中放置新的等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14340563/

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