dポイントプレゼントキャンペーン実施中!

皆さんこんにちは。

この程、C++を勉強した出した初心者です。
作ったプログラムのコンパイル作業などにも
無事成功し、

いよいよ、
プログラムを実行してみたのですが、
以下のとおり、アボートとなり、
途中で、プログラムが終了しました。

-========-========-========-========-=======-========-========-

GNU MP: Cannot reallocate memory (old_size=4 new_size=536870916)
アボートしました

-========-========-========-========-=======-========-========-

状況を改善するために、
Googleなどで調べてみたものの、
調べ方が悪いのか、
どうも理解できるページにもたどり着けず、
質問させていただく事にしました。

どこの行で、
この状況に至るか分からなかったので、
色々と問題きり分けを進めてみたら、
下記、
「circle.put(std::string(key), std::string(value));」
の行で、エラー(アボート)にいたる事は分かりました。


========-========-========-========-=======-========-========

if(np == NULL) {
printf("メモリの確保に失敗しました\n");
exit(1);
}

CTL_INFO("", "(6) "); //ここまで問題なく進む

circle.put(std::string(key), std::string(value));

========-========-========-========-=======-========-========

問題を解決するというより、
エラーの意味が分かると非常に嬉しいです。
メモリが不足しているという事でしょうか?

初心者で分かりにくい部分もあると
思いますが、
どうか皆様宜しくお願い致します。

A 回答 (4件)

メモリの確保エラーですね。


4バイトのエリアを536870916バイトに拡張する処理がエラーとなっています。
    • good
    • 0
この回答へのお礼

namacyaさん!

早々にアドバイスいただきまして
ありがとうございました!

動的メモリ確保ができていないのですかね。
なるほど。

お礼日時:2009/01/27 17:06

うにゃ? なんでここで GNU MP が出てくるんだ?


エラーの意味は「(GNU MP が) メモリを確保しようとしたんだけど足りなかった」ということなんだけど, そこから先はプログラム全体を見ないと分からないなぁ.
ちなみに世の中にはあなたが想像するほど超能力者は多くないと思われるので, そんな circle::put なんか見せられてもほとんどの場合に全く無意味です. dousa::route や id::digest, dousa::bits などの意味や動作が全く示されていないのに, 何をどう判断しろと?
    • good
    • 0
この回答へのお礼

Tacosanさん!

アドバイスありがとうございました!
まあ、やはりメモリを確保出来ないのが原因なんですよね。
参考になりました。

プログラムが巨大すぎて、
全部見せるのも苦労すぎるので、
概要が見えてきたここいらで、
最後の詰めをやってみたいと思います。

超能力者を呼ぶ真似をしてすいませんでした。
ありがとうございます。

お礼日時:2009/01/27 18:12

> 適当な10文字以内の文字を入力していました。


ならcircle.putの中が怪しいですね。
    • good
    • 0
この回答へのお礼

bleisさん!

回答ありがとうございます。

うざい初心者ですいませんです。
疑うべき概要なんですが、
「circle.put 」のどんな不備が予想される感じなものですか?
単なる予想でも、
聞かせてもらえるとありがたいです。
circle.putは次のような感じではあります。

class circle {
void put(const key_type& key, const value_type& val) {
dousa::route(id::digest(dousa::bits(), key))->put(key, val);
}
}

お礼日時:2009/01/27 17:42

> circle.put(std::string(key), std::string(value));


この行でのkeyとvalueの値はどうなっていますか?

この回答への補足

早速の回答感謝いたします。

キーボードから打ち込んだ値が
keyとvalueになるようにしている感じにしています。

まだ、テストで動かしている段階でしたので、
適当な10文字以内の文字を入力していました。
こんな感じです。

key:kix
value:kansai

補足日時:2009/01/27 16:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!