特にC/C++で変数を宣言すると、変数はデータ型(およびマシン)に従ってコンピュータのメモリに割り当てられます。私が持っている質問は、オンラインIDEでプログラムを実行すると、自分のPC /マシンのメモリが使用されるのでしょうか?オンラインコンパイラがコンピュータのメモリに与える影響
我々は特にfree()
、malloc()
、calloc()
ような関数の引数にポインタを誤用した場合、何らかの理由で、コンピュータのメモリが破損している可能性があるので、この質問は、より動的にCにメモリを割り当てるの問題のために意味されますある程度まで(メモリリーク)。
したがって、オンラインのコンパイルでコンピュータのメモリを使用しないと、おそらくオンラインのIDEでこれらの機能を使用できますが、私はそのケースを知りません。それは安全ですか?
プログラムをローカルで実行しても、コンピュータのメモリには「損傷」はありません。メモリリークが発生すると、 'malloc' *多くの' free'を呼び出すと、呼び出しは最終的に失敗します。それで全部です。プログラムが終了すると、OSは再びソートを行い、プログラムが使用していたすべてのメモリを解放します。 –
これはCの抜粋です:Schildtによる完全なrefereceです。 'free()'関数は、ptrがポイントするメモリをヒープに返します。これにより、将来の割り当てのためにメモリを利用できるようになります。 'free()'は、以前に動的割り当てシステムの関数の1つを使って割り当てられたポインタでのみ呼び出されることが必須です。コールで無効なポインタを使用すると、メモリ管理メカニズムが破壊され、システムがクラッシュする可能性があります。ヌルポインタを渡すと、 'free()'は何もしません。 – Buddhist
ええ、Linux、Windows、OSXのような現代的なオペレーティングシステムを実行すると、ヒープ全体が仮想メモリ内にあり、プログラムが終了すると再利用されます。各プログラムには独自のヒープがあり、相互にダメージを与えることはできません。 –