上記の場合、scanfで入力される値が0以下だとmalloc関数が実行されず、ptrの値が更新されません。この場合、ptrは値が更新されずにfree関数が実行されるため、free関数には不定値のアドレスが指定されることになります(ptrは変数宣言時に初期化されていないので何の値が格納されているかは不定)。
特にリンカスクリプトや pragma などの属性が指定されない場合、初期化されたポインタ変数の配置される位置は実際のプログラムコードよりも後に配置されます。 char *a = ""; int main(void) { return *a; } このようなコードを test.c として保存し、 gcc -o test test.c && objdump...
本セミナーでは、リンカの基本的な考え方を説明し、 IARの多くのコンパイラで利用されるリンカであるILINKでの基本を説明し、変数の初期化、より細かい配置をするためのブロックを活用した配置などについてサンプルを用いて具体的にご説明します。オ...