オクツリーデータ構造を構築し、最後のノードのためにメモリを節約する8個の子供を保持するように作られたオブジェクトを作成する代わりに、ポインタを直接値に格納したい。ポインタに符号なし整数を格納する
私のデータ型はuint32_tです。これは、ポインタがx86またはamd64のいずれかに保持するのに十分なビット数を持つことを意味します。
したがって、符号なし32ビット整数をx86またはamd64ポインタに格納するにはどうすればよいですか?
擬似コード:
uint32_t i = 123;
Octree* ptr = i;
uint32_t ii = ptr;
std::cout << ii << std::endl; //Prints 123
どのようにこれは可能ですか?可搬性ポインタが許可されていない符号なし整数でストレートを保存
uint32_t i = 123; Octree * ptr = reinterpret_cast(i); uint32_t ii = reinterpret_cast (ptr); –
FamZ
@FamZ:x86上で動作するはずですが、技術的に違法で、クラッシュを引き起こすようないくつかの奇妙なプラットフォームがあります(これらのCPU上で無効なポインタがハードウェア例外を引き起こす* –