↑: "[[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]]によって異なります。