コードは以下の通りである:Cで静的変数と自動変数を解放()できますか?
#include <stdlib.h>
int num = 3; // Static external variable
int *ptr = #
int main(void)
{
int num2 = 4; // Automatic variable
int *ptr2 = &num2;
free(ptr); //Free static variable
free(ptr2); //Free automatic variable
return 0;
}
私は上記のコードをコンパイルしようと、それは動作しますが、私は好奇心、静的変数と、自動変数の両方を解放することができfree()
機能していますか?基本的には何もしませんか?メモリ割り当て関数(malloc
、calloc
など)によって返されていないポインタにfree()
を呼び出す
"作品"の十分に低い品質の定義のために "作品"。また、同じシステムでも、同じコンパイラでも、異なるコンパイルオプションでもクラッシュする可能性があります。それは単に**未定義の動作です** - 何かが起こることがあります。 – Jens