C++里能不能在指定的一块内存中创建对象的实例?

bluefin 2002-08-28 03:01:20
就是我事先分配一块内存,然后在这块内存里创建实例,
最好是能在一大块内存中创建多个实例,象数组一样。
...全文
103 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
_xiaolifeidao 2002-08-28
  • 打赏
  • 举报
回复
呵呵,<<thinking in c++>>上不是讲得很清楚吗:)
当然可以啦

class A
{
int x,y;
};
char* buf=new char(1024);

A * pa=new(buf)A;
好象是这样写的吧,记不大清楚了:)
自己去查一下吧:)
wyq_linda 2002-08-28
  • 打赏
  • 举报
回复
认同 jinfeng_wang的算法;
wingfiring 2002-08-28
  • 打赏
  • 举报
回复
对于频繁分配的内存来说,内存池结合,定位new是有助于提高效率的。
而且可以避免产生内存碎片。
用法嘛 white_whan(C++ Fans)已经说得很清楚了:new(address) type;
silverfoxking 2002-08-28
  • 打赏
  • 举报
回复
这样干有什么意义吗,不懂,晕,欢迎讨论,最好有个高手给个明确的答复,谢谢^_^
tinytot 2002-08-28
  • 打赏
  • 举报
回复
像这样行吗?

class B { /*....*/ };
class Pack
{
Pack();
enum eSize{ SIZE = 100 };
void Allocate();
private:
B elements[SIZE];
};

void Pack::Allocate()
{
for (int i = 0; i < SIZE; ++ i)
elements[i] = B();
}
耙子 2002-08-28
  • 打赏
  • 举报
回复
理论上是可行的,但是实现上不太安全。
类的数组完全可以建。
你没必要自己管理内存分配的,这是现代的编译工具所不推荐的。
SHIZUMARU 2002-08-28
  • 打赏
  • 举报
回复
replacement new

到More Effective C++(或者是Effective C++?记不清了)的索引里去查这个这个词组,就知道了。
future0723 2002-08-28
  • 打赏
  • 举报
回复
把对象的指针建在内存里,不好吗?
white_whan 2002-08-28
  • 打赏
  • 举报
回复
可以的。
例如:
class A;
...

LPTSTR lpBuf = new char[NUM*sizeof(A)];
for (int i = 0; i < NUM; i++)
{
new (lpBuf[i*sizeof(A)])A;
}
好像是这样的!记不大清了

69,378

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧