• ベストアンサー

メモリの開放を全て行いたいが開放し損ねている VC++6.0 使用

taka_tetsuの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1
majikaru
質問者

お礼

返答が遅くなってすみません。 ご返答ありがとうございます。 貴重な情報ありがとうございます。 さっそく指定URLの記事を読んでようと思いますが ・・・なにやら難しそうですね(w

関連するQ&A

  • メモリの開放について

    いつもお世話になっております。 メモリ開放のお作法について教えてください。 int* p ; p = (int*)malloc( 100 * sizeof( int ) ) ;  ※ p = (int*)malloc( 100 * sizeof( int ) ) ;  ※ p = (int*)malloc( 100 * sizeof( int ) ) ; free(p); このような記述をした場合、※の付いている2行でメモリ確保した 領域は開放されるのでしょうか。 (メモリ確保に失敗した場合の処理は省略してます。) よろしくお願いします。

  • mallocしたメモリの開放

    かなり基本的なことですいませんが、 下記のようなイメージのコードで確保したメモリを 確実に開放するにはどうしたらいいでしょうか? やりたいこととしては、動的に確保したメモリにデータを 入れて、それをベクトルに入れて使いまわしたいです。 下記のコードからfreeの部分をやめても大丈夫でしょうか?その場合、どうやってメモリ開放するんでしょうか? ベクトルが消滅すればメモリが開放されるんでしょうか? テストしてみましたが、減った気配がない。。。 根本的に考え方がおかしいかもしれません。。。 お助けください。 お願いします。 wchar_t str[6] = L"あいうえお"; wchar_t* mem = (wchar_t*)malloc(6 * sizeof(wchar_t)); wcsncpy(mem, str, 6); std::vector<wchar_t*> vetorTemp; //実際グローバル変数 vetorTemp.insert(vetorTemp.end(), mem); free(mem); // ここで開放するとvetorTempの中身も利用できなくなってしまった

  • メモリ確保エラー時の効率的な書き方

    mallocなどで複数の変数に対してメモリを確保する場合があると思います.例えば3つの変数の場合, char *a, *b, *c; a = (char *)malloc(100); if(a==NULL){ /* メモリ確保できなかったとき */ return (-1); } b = (char *)malloc(100); if(b==NULL){ free(a); return (-1); } c = (char *)malloc(100); if(c==NULL){ free(a); free(b); return (-1); } 変数が多くなるにつれて後から確保する変数のエラー処理(すでに確保したメモリのfree)が増えてしまうので,何か良い方法(コードが短くなるような)はないでしょうか?

  • メモリリークについて

    VC6.0でデバッグ実行すると Detected memory leaks! Dumping objects -> ソースファイル名(932) : {136739} normal block at 0x00FD4AC0, 0 bytes long. Data: <> メッセージがあり メモリがリークしているようです メッセージやソースから察するに 0バイトの領域を確保し それを解放したときに起こっているようです 領域をmallocして 解放ではNULLでなければ解放 という処理はしてはいけないことなのでしょうか 0バイトの領域を確保した場合 又は0バイトの領域を確保しないように 処理しないといけないのでしょうか? 知識のある方よろしくお願い致します

  • malloc関数 free開放とはなんですか?

    malloc関数を用いてメモリを確保した後、 必ずfreeで開放を行わなければならないですよね? この開放とはどういう意味なのでしょうか?

  • VC++6.0の混在モード

    VC++6.0でデバッグ時に混在モードで表示されてしまいデバッグがスムーズにできません。 できればデバッグ時に混在モードを表示しないようにしたいのですが、そのような設定にできるのでしょうか?

  • GDI+におけるメモリの開放について

    C++でGDI+のコードを書いています。 たとえば Gdiplus::Bitmap bmp(1000, 1000); を一度呼ぶと、アプリケーションを終わらすまで確保した領域が開放されず、 繰り返し呼ぶと使用メモリがどんどん増えていってしまいます。 確保したBitmapを開放するにはどうしたらよいのでしょうか?

  • c言語のmalloc関数、またrealloc関数

    c言語のmalloc関数は確保するメモリの領域を、配列としてのみしか処理出来ないのですか。 つまり、malloc関数で確保したメモリの領域を変数、また多次元配列、また構造体としては処理出来ないのでしょうか。 c言語のrealloc関数は以前の確保したメモリの領域から、確保し直したメモリの領域の場所が変わるかもしれないという事ですが、この場合の場所が変わるという意味は、メモリの領域のアドレスが変わるという事でしょうか。 また、以前の確保したメモリの領域に代入していたデータが使用出来なくなるという事でしょうか。

  • 自アプリ内のメモリを管理したい

    こんにちは。 現在C/C++でプログラムを組んでいます。 C/C++でメモリを確保、開放するにはmalloc、new、free,deleteを使うわけですがアプリケーションが開始された時点で、ある一定のメモリを確保しておいてそのメモリから分け与えたりデフラグしたりして自分のアプリで使うメモリを管理したいと思っています。 BYTE* g_allMemory;//グローバル変数 g_allMemory = new BYTE[1024]; プログラムを実行した時点でこのようにメモリを確保しておき要所要所で自作関数を利用してメモリを分け与えたりデフラグしたりして使えるようにしたいのです。 しかしデフラグした瞬間に変数のアドレスがずれてしまって使い物になりません。 これを解決したいのですがアドバイスやお勧めのホームページや参考文献などがあったら紹介をお願いします。

  • メモリ解放が必要な場合

    基本的な質問です。mallocやreallocのときはfreeが必要といわれますが、ローカル変数でポインタ型の変数を宣言したときなどもfreeしてもいいのでしょうか?splintをかけるとmallocのように動的にメモリ確保してないのにメモリリークの可能性が。。。などとエラーがでてしまってどう対応したらよいか困っています。