在谈内存对齐问题!高手过来
老大看了上次有关内存对齐的讨论觉的很精彩,也十分佩服,
但小弟还有一些不明白的地方,现请教大侠几个问题?
问题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表一个我需要存放的一个结构体(或者字符串的大小)
我是否需要考虑内存对齐问题?
因为内存是按页去管理的,如果一个结构不在同一页上,访问的时候是否会有问题?
请指教?谢谢!