游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2011|回复: 4

placement new[] 的问题,怎么让它不留4字节的数组长度

[复制链接]

25

主题

304

帖子

311

积分

中级会员

Rank: 3Rank: 3

积分
311
发表于 2007-4-18 15:44:00 | 显示全部楼层 |阅读模式
用placement new[]做分段调用数组元素的构造函数
发现,每次都会多出4字节的数组长度,
请问各位,如何才能避免这4字节

我试过重载new,还是会有4字节被保留

8

主题

390

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-4-18 16:01:00 | 显示全部楼层

Re:placement new[] 的问题,怎么让它不留4字节的数组长度

什么4bytes?是否你的类具有虚拟函数?

86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
发表于 2007-4-18 16:26:00 | 显示全部楼层

Re:placement new[] 的问题,怎么让它不留4字节的数组长度

template <class T>
T * ConArray( LPVOID lpMem, size_t count )
{
    LPVOID lpNewMem = (LPVOID)((DWORD*lpMem)-1);
    DWORD ORGMEM = *(DWORD*)lpNewMem;
    new(lpNewMem) T[count];
    *(DWORD*)lpNewMem = ORGMEM;
    return (T*)lpMem;
}

盗用,哈哈~

25

主题

304

帖子

311

积分

中级会员

Rank: 3Rank: 3

积分
311
 楼主| 发表于 2007-4-18 16:51:00 | 显示全部楼层

Re:placement new[] 的问题,怎么让它不留4字节的数组长度

晕....................

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2007-4-27 14:10:00 | 显示全部楼层

Re:placement new[] 的问题,怎么让它不留4字节的数组长度

不知道你说的多出来的是前面?后面?

如果是前面多出来,那可能是:perator new所使用的cookie,用来标记你所申请的memory的size
如果是后面,有可能是对齐导致
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 16:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表