在谈内存对齐问题!高手过来

ninyjun2008 2004-02-25 08:38:49
老大看了上次有关内存对齐的讨论觉的很精彩,也十分佩服,
但小弟还有一些不明白的地方,现请教大侠几个问题?

问题1:
#include <new>
class CTest
{
public:
CTest()
{}
CTest( int i)
{}
private:
int i_;
char p[3];
};
int main(int argc, char* argv[])
{
//请问老大在这个地方需要考虑内存对齐问题吗(我是指任何机器类型上)? 为什么?
char strBuff[ sizeof( CTest) * 10];
CTest * pBuffer = ( CTest *)strBuff;
//缺省构造
CTest * pFirst = new(pBuffer) CTest;
// 缺省构造
CTest * pSecond = new(pBuffer + 1) CTest;
//带参数的构造;
new(pBuffer + 2) CTest( 5);
//带参数的构造
CTest * pFourth = new( pBuffer + 3) CTest( 10);
//缺省构造
CTest * pFifth = new(pBuffer + 4) CTest();
return 0;
}
问题2:
我用malloc 分配 17 * 2000000个连续的地址空间
注:17表一个我需要存放的一个结构体(或者字符串的大小)
我是否需要考虑内存对齐问题?
因为内存是按页去管理的,如果一个结构不在同一页上,访问的时候是否会有问题?
请指教?谢谢!
...全文
34 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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