質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

2667閲覧

C++におけるメモリリーク?について

milco

総合スコア20

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

3クリップ

投稿2018/01/03 18:04

編集2018/01/03 18:50

C++にて繰り返しファイルを読み込み、変数に格納して処理を行う、という関数を定義しているのですが、この関数を実際に使用した際、数ファイルを読み込んだ段階でエラーが発生して困っております。
std::bad_allocによるもので、メモリの確保に失敗した場合に出るエラーとの事ですが、C++においてファイルを繰り返し読み込んで変数に格納する際は、その変数についてメモリの解放を行う必要があるということなのでしょうか?
また、どのような命令を利用すれば良いのでしょうか?

以下、コードです。
Inputfiles内にファイルのリストを記述しており、順番に読み込んで処理を行う仕様です。
数ファイルを読み込み、次に新しくファイルを読み込もうとした段階でおそらくメモリが不足し、エラーが発生しているように見えます。
--追記--
ファイルリストB
a
b
c
d
において、dを読み込んだ際にエラーが出る場合、
ファイルリストA
a
a
a
b
c
d
a~dはVectorファイルです。
においてもdを読み込んだ際にエラーが出てしまう模様です。
データの種類が増えることに問題があるのでしょうか。

C++

1void FileReader::ReadVectors() 2{ 3 for (std::size_t i = 0; i < Params.InputFiles.size(); i++) { 4 std::cout << "Reading files [" << i << "/" 5 << InputFiles.size() << "] " 6 << InputFiles.at(i) << std::endl; 7 LogVector LogArcVector(*LogVector::Read(InputFiles.at(i))); 8 ・・・

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/01/03 23:24

差し支えなければLogVector型の詳細とLogVector::Read関数の内容を提示していただけますか?
guest

回答1

0

ベストアンサー

こんにちは。

LogVectorがどのようなクラスなのか分かりませんが、一般的なクラスならばそのインスタンスを開放する際に、使用しているメモリを「全て」開放する筈です。
そして、forループ内で確保している LogVectorのインスタンスLogArcVectorは、非staticなローカル変数として確保しているため、forループの各ループの最後で開放されます。

dファイルが超巨大なファイルでそれ1つさえ読めないほど大きいということはないでしょうか?

投稿2018/01/04 02:43

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

milco

2018/01/04 18:23

エラーに関しては自分の生成したデータ側に問題があった為に発生していたものでした、お騒がせしました。 メモリの開放については全く知らなかったため、大変勉強になりました、各ループ毎に解放が行われるのですね。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問