このプログラムでは、unsigned chars に対してnewによって返された各アドレスを出力しています。最後にそれらを逆方向に削除します。
#include "stdafx.h"
#include<stdlib.h>
void func();
int main()
{
int i=10;
while(i-->0)printf("loaded %i \n", (new unsigned char));
getchar();
unsigned char *p=new unsigned char;printf("last pointer loaded %i \n", p);
i=10;
while(i-->0)delete (p-=64);
getchar();
p+=640;
delete p;//nearly forgot to delete this ^^
return 0;
}
出力:
ご覧のとおり、それぞれのnewは 64 バイトにアラインされたデータを返します。
質問:この 64 バイトは、キャッシュ ラインのサイズと同じですか、それとも単なるコンパイラの問題ですか?
質問:構造体の長さはほとんど 64 バイトにする必要がありますか?
質問: CPU、RAM、OS、またはコンパイラを変更すると、これは異なりますか?
Pentium-m、VC++ 2010 Express、windows-xp
ありがとう。