C/C++でコーティングしていると、特定のサイズにアライメントされた領域が必要なることがありますよね。ハードウェアに近いところを実装してると「4KiBでアラインせよ」とか普通にありますね。 このようなアライメントされた領域を確保する方法はいくつかありますが、今回は可搬性の高い方法をいくつか紹介します。 posix_memalign 関数 これは名前の通り、POSIX準拠の関数ですので Unix や Linux などほとんどの環境で動作します。プロトタイプ宣言は int posix_memalign(void **memptr, size_t alignment, size_t size); です。 この関数は、引数 size(Byte)の大きさの領域を確保し、引数 memptr の指す先へ領域へのポインタを格納します。その領域は引数 alignment で指定した値でアライメントされていま
![cpp-aligned-allocate](https://cdn-ak-scissors.b.st-hatena.com/image/square/59549f19dee9015df39a45cacaba8d0bb4e53bc6/height=288;version=1;width=512/https%3A%2F%2Fhangstuck.com%2Fwp-content%2Fuploads%2F2017%2F04%2Fc_cpp-log.png)