かなり基本的なことですいませんが、
下記のようなイメージのコードで確保したメモリを
確実に開放するにはどうしたらいいでしょうか?
やりたいこととしては、動的に確保したメモリにデータを
入れて、それをベクトルに入れて使いまわしたいです。
下記のコードから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の中身も利用できなくなってしまった
No.1ベストアンサー
- 回答日時:
> 下記のコードからfreeの部分をやめても大丈夫でしょうか?
何をもって大丈夫とするかによります。簡単な処理を行ってすぐ終わるようなプログラムであれば、現実的には大丈夫かと思います。
> その場合、どうやってメモリ開放するんでしょうか?
プログラムを終了させるしかありません。
> ベクトルが消滅すればメモリが開放されるんでしょうか?
解放されません。
単に、ワイド文字列をベクタで管理したいだけであれば、素直にstd::wstringを使った方がよいかと思います。
ご回答ありがとうございます。
なるほどですね。
std::wstring良いですね。実は知らなかったです。。
あー。
wchar_t*を使いまくってますので、変えるのがちょっと大変です。
できれば、ベクタの中身を自力で開放するのに切り替えたいですが、
可能でしょうか?
すいません。
No.2
- 回答日時:
> できれば、ベクタの中身を自力で開放するのに切り替えたいですが、
> 可能でしょうか?
可能かどうかで言えば、可能です。
適当なアロケータ(例えばmy_allocator)を定義して、std::vector<wchar_t*, my_allocator>を特殊化してやればよいわけです。ただ、非常に面倒なので、あまりお勧めできませんが、std::vectorから派生した方が楽かもしれません。
度々すいませんありがとうございます。
そうですか。。
ん~
すいません、最後にもう一つ教えてください。
std::vectorの代わりにstd::listをつかった場合
メモリ開放が楽になったりしますかね?
なんか必死の抵抗って感じですが^_^
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAの配列サイズとメモリに関して
-
C言語で、メモリを解放しないで...
-
メモリアクセス時間の計測方法
-
「memcpy」と「strcpy」について
-
[ちょっと息抜き]メモリを解放 ...
-
メモリが不足しています(VBA)
-
メモリを解放しないとどうなる?
-
メモリのセグメント違反の解決...
-
エクセルのメモリ使用状況/Appl...
-
メモリの解放について VB6 VBA
-
プログラム領域の算出方法
-
エクセル キャッシュメモリー...
-
ファイルマッピング関数で失敗
-
クリスタルレポートでメモリ不...
-
プログラムの最大メモリ消費量...
-
C#におけるexeファイルのサイズ...
-
バッチファイルでの実行EXEのメ...
-
マイコンのメモリマップについて
-
エクセルVBA 大容量CSVファイル...
-
Macターミナルで実行中のプログ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAの配列サイズとメモリに関して
-
C言語で、メモリを解放しないで...
-
メモリのセグメント違反の解決...
-
「memcpy」と「strcpy」について
-
「ヒープサイズの設定」て何?
-
C言語における再帰呼び出しの...
-
メモリが不足しています(VBA)
-
【C言語】再帰が時間がかかる...
-
エクセルのメモリ使用状況/Appl...
-
大容量のメモリ確保をスワップ...
-
C#のOutOfMemoryException発生...
-
メモリ不足
-
ファイルマッピング関数で失敗
-
C++のCopyFileでメモリが増える
-
C言語初心者です。debug assert...
-
C言語:関数のメモリ上でのサイ...
-
移動可能メモリ
-
EXCEL-VBAにてADOのレコードセ...
-
VB.netでUSBメモリの固有I...
-
エクセルVBA 大容量CSVファイル...
おすすめ情報