malloc
From cppreference.com
| ヘッダー <stdlib.h> で定義 |
||
| void *malloc( size_t size ); |
||
size バイトの未初期化ストレージを割り当てます。
割り当てが成功した場合、基本的なアラインメントを持つ任意のオブジェクト型に適したポインターを返します。
size がゼロの場合、malloc の動作は実装定義です。たとえば、ヌルポインターが返されることがあります。または、ヌルでないポインターが返されることもありますが、そのようなポインターは間接参照してはならず、メモリリークを回避するために free に渡す必要があります。
|
以前の free、free_sized、および free_aligned_sized(C23 以降) または realloc によるメモリ領域の解放は、同じまたはその一部を割り当てる |
(C11 以降) |
目次 |
[編集] Parameters
| size | - | 割り当てるバイト数 |
[編集] Return value
成功した場合、新しく割り当てられたメモリの先頭へのポインターを返します。メモリリークを回避するために、返されたポインターは free() または realloc() で解放する必要があります。
失敗した場合、ヌルポインタを返す。
[編集] Example
このコードを実行
#include <stdio.h> #include <stdlib.h> int main(void) { int *p1 = malloc(4*sizeof(int)); // allocates enough for an array of 4 int int *p2 = malloc(sizeof(int[4])); // same, naming the type directly int *p3 = malloc(4*sizeof *p3); // same, without repeating the type name if(p1) { for(int n=0; n<4; ++n) // populate the array p1[n] = n*n; for(int n=0; n<4; ++n) // print it back out printf("p1[%d] == %d\n", n, p1[n]); } free(p1); free(p2); free(p3); }
出力
p1[0] == 0 p1[1] == 1 p1[2] == 4 p1[3] == 9
[編集] References
- C17標準 (ISO/IEC 9899:2018)
- 7.22.3.4 The malloc function (p: 254)
- C11標準 (ISO/IEC 9899:2011)
- 7.22.3.4 The malloc function (p: 349)
- C99標準 (ISO/IEC 9899:1999)
- 7.20.3.3 The malloc function (p: 314)
- C89/C90標準 (ISO/IEC 9899:1990)
- 4.10.3.3 The malloc function
[編集] See also
| 以前に割り当てられたメモリを解放する (関数) | |
| C++ ドキュメント for malloc
| |