- 853 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 19:28:23.35 ID:+a5jVKa7.net]
- 独学で勉強中ですごくくだらない質問だと思うんですが、よくわからないのでよろしくお願いします
//---------- #include <iostream> int main(){ int *i = new int() ; std::cout << i << std::endl ; return 0 ; } //---------- これだとvalgrindやcppcheckを使ってチェックするとメモリリークしてるとして言われます 実際newしたものをdeleteしてないのでこちらは納得できるんですが、一方次の //---------- #include <iostream> int *i ; int main(){ i = new int() ; std::cout << i << std::endl ; return 0 ; } //---------- これだとnewしたものをdeleteしてないのにどちらのツールもエラーが出ずに終了してしまいます この後者のコードは実際に問題無いんでしょうか? それともただ検出漏れなだけで正しくないものなのでしょうか? また、もし問題がないならその理由(なぜグローバル変数として宣言しているとdeleteしてないのに問題ないのか)も教えていただけると助かります よろしくお願いします
|

|