↑: "[[42-ExtenalFunctions]]"
##### ![[malloc()-書式]]
##### 説明
- malloc関数はsizeで指定したバイトのメモリを動的に割り当てる関数です [[mallocはsizeバイトのメモリを割り当てる|Ra9d]] [[mallocはヒープからメモリを割り当てる|R96f]]
- 割り当てたメモリの内容は初期化しません[^1] [[mallocはメモリの内容を初期化しない|Rm24]]
- mallocに成功した場合割り当てたメモリのポインタを返します [[mallocは割り当てされたメモリのポインタを返す|R4sy]]
- `malloc(0)`の場合はfreeしても大丈夫なポインタを返します[^2] [[malloc(0)の場合NULLかfreeしても問題ないポインタを返す|Rzdm]] [[Linuxではmalloc(0)はfree可能な最小領域を返す|Retz]]
- mallocが失敗した場合はNULLを返します [[mallocがエラーの場合NULLを返す|R46m]]
- mallocの割り当てを超えてアクセス・代入などを行うとヒープ破壊が発生します [[ヒープ破壊の原因の一つは割当領域のオーバーフロー|Rguq]]
> [!quote] [[malloc]]
##### ![[malloc()-free()使用例]]
%% DATAVIEW_PUBLISHER: start
```dataview
TABLE WITHOUT ID
file.link as child,
aliases[0] as alias
from "zk/core"
where meta(up).path = this.file.path
SORT file.mtime ASC
```
%%
| child | alias |
| ----------------------------------------------------- | ----- |
| [[zk/core/malloc()-書式.md\|malloc()-書式]] | Cmmd |
| [[zk/core/malloc()-free()使用例.md\|malloc()-free()使用例]] | Ct82 |
%% DATAVIEW_PUBLISHER: end %%
[^1]: なのでぐっちゃりした値が入ります。使う場合は先に初期化するのもありです。
[^2]: Linuxの場合。[[OS]]によって異なります。