delete[/url] について
Posted: 2007年9月14日(金) 10:18
はじめまして。C++のnew/deleteについて質問させて下さい。
とっても初心者的な質問で、とっても恥ずかしい質問かも知れませんが
教えていただけるととっても助かります。よろしくお願いします。
配列を動的にメモリを割り当てるためにnewを使いdeleteでメモリを解放させるというやり方がありますよね。
その時ポインタが有効かそうでないかを判断するのにはポインタがNULLであるかで判断するというのが
正しいコーディングだと理解しています。
もしも、newで割り当てたメモリをdeleteで解放する前にNULLで初期化を間違ってしてしまった場合
どんな影響が出るのかが知りたいと思います。やはりメモリは解放されませんか?
例として
char *pn=NULL;
if (pn==NULL)
pn = new char[20];
.
.
.
pn = NULL;
・
・
delete[/url] pn;
例では、deleteでメモリの解放は最終的に行うのですが
その前にポインタをNULLにしてしまったという場合です。
こんな事をすると、メモリリークが起こるとか
メモリの共用違反の原因になりますか?
とっても恥ずかしい質問ですみません。
例の事をやった場合に起こる事の問題の可能性などを
教えていただけると、とてもありがたく思います。
よろしくお願い致します。
とっても初心者的な質問で、とっても恥ずかしい質問かも知れませんが
教えていただけるととっても助かります。よろしくお願いします。
配列を動的にメモリを割り当てるためにnewを使いdeleteでメモリを解放させるというやり方がありますよね。
その時ポインタが有効かそうでないかを判断するのにはポインタがNULLであるかで判断するというのが
正しいコーディングだと理解しています。
もしも、newで割り当てたメモリをdeleteで解放する前にNULLで初期化を間違ってしてしまった場合
どんな影響が出るのかが知りたいと思います。やはりメモリは解放されませんか?
例として
char *pn=NULL;
if (pn==NULL)
pn = new char[20];
.
.
.
pn = NULL;
・
・
delete[/url] pn;
例では、deleteでメモリの解放は最終的に行うのですが
その前にポインタをNULLにしてしまったという場合です。
こんな事をすると、メモリリークが起こるとか
メモリの共用違反の原因になりますか?
とっても恥ずかしい質問ですみません。
例の事をやった場合に起こる事の問題の可能性などを
教えていただけると、とてもありがたく思います。
よろしくお願い致します。