C言語のmemalign関数の使用方法は何ですか
C言語のmemalign関数は、メモリを確保し、確保されたメモリのポインタを返す関数です。
この関数は以下のように定義されます。
void *memalign(size_t alignment, size_t size);
パラメータの説明:
- alignment: メモリの割り当て方法です。通常2のべき乗で、sizeof(void*)と同じ、またはそれより大きい値です。条件を満たさなければエラーが発生します。
- サイズ: 割り当てするメモリサイズを示す。
戻り値: メモリの割り当てに成功した場合、割り当てられた新しいメモリへのポインタを返します。割り当てに失敗した場合、NULL を返します。
サンプルの使用方法
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr;
ptr = (int *)memalign(16, sizeof(int) * 10);
if(ptr == NULL) {
printf("内存分配失败\n");
return 1;
}
printf("内存分配成功\n");
free(ptr);
return 0;
}
memalign関数を使って、10個int要素分の大きさのメモリ領域を割り当てて、メモリは16バイト境界にアラインされるように要求しています。割り当てに成功した場合には「メモリ割り当て成功」と出力し、最後にfree関数を使ってメモリを解放します。
memalign関数の割り当てたメモリーはfreeで解放しないとメモリリークになる点に注意