現在VC++6.0を使用して数値解析を行っているのですが、ワークステーションでメモリを1256MBに増設して、500MBくらいのメモリを使用する解析を行ったところ、「トータルイメージサイズが最大値(268435456)を越えています; イメージは動作しない可能性があります」という警告が出ました。しかし実行してみると正常に動作します。

なぜそんな警告がでるのでしょうか?どなたか教えてください、お願いします。
※OSはWINDOWS2000を使用しています。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

補足読みました。



よく見たら、268,435,456バイトって256MBですね。
で、MSDNを調べてみたところ、単純にリンカの出力する
警告のようですね。
#LNK4013、LNK4084にあります。

これによると、/BASEオプションで設定されている、
もしくはディフォルト値を越えているために、リンク時に
警告をはき出すようです。どうやらこれらを見てみると、
アプリケーションの最大サイズは256MBとされている
ようです。

DLLやOCXなどにしてここのアプリケーションサイズを
小さくするか、メモリを動的に取得するようにして、
サイズを減らさないと、その警告は消えないと思います。
#ちなみに実行結果が正常なのも保証はされないと
#思いますよ。

って、toysmith様も同じことを書かれていますね。
ではでは☆
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
メモリを動的に取得できるようにしてみたいと思います。

大変参考になりました。ありがとうございます。

お礼日時:2001/05/19 21:47

Windowsシステムではアプリケーションサイズ(CODE+DATA)が2^28バイトを超えるとこの警告を出すようです。


多分、グローバルで大きな配列を確保しているのでしょう。

数値解析だと大きな配列は必須ですから他の方法を考える必要があるでしょう。
(アルゴリズムを見直せば何分の1かになるかもしれませんが)

VirtualAllocを使えば4GBまでの領域を確保可能です。
ただし、仮想空間で確保する為ディスク開き容量、スワップ頻度などを考慮しなければなりません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
大変参考になりました。

お礼日時:2001/05/19 21:44

単純に、.objファイルが大きすぎるのではない


でしょうか?

それにしても数値解析だけで500MBというのは
すごいですね・・・
#もう少しメモリの使い方を考慮した方が計算が
#早くなるのではないでしょうか?
#OSのスワップも入るだろうし・・・

ではでは☆

この回答への補足

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

早速調べてみたところ、.objファイルはどれも数KB程度で小さいです。
私の扱っている解析手法はもともとスーパーコンピューターで行われていた手法で、超並列化は行えてもメモリを削減することは解析手法の性質上不可能です。
500MBというのもWSの性能を見るために行ったテストで、実際は現在の1.2GBでも全然足りないというのが現状で、まだまだメモリを増設する必要があります。

ところで、このWSは最初、メモリが256MBでメモリを増設する前にVC++をインストールしました。そのためVC++が、メモリが増設されたのを認識していないということはあるのでしょうか?

補足日時:2001/05/18 21:40
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aと関連する良く見られている質問

Q英語がペラペラの人 - 膨大な量の単語の覚え方

英語がペラペラの人 - 膨大な量の単語の覚え方

英語を勉強して英語が問題なく読める・聞ける・話せるようになった人に質問です。
あのなんともいえない膨大な量の英単語を、いちいち覚えるのはかなり疲れる作業です。
一回や2回調べただけでは覚えられなく、一度覚えてもしばらくたったら忘れてしまったり・・
このままじゃアメリカの大学試験まで間に合いそうにないです。

みなさんはどんな方法で単語を覚えていきましたか?
なにか良い方法があれば教えてください。

Aベストアンサー

他の方も仰っていますが、単語は1回や2回調べただけでは覚えられるものではありません。何度も繰り返すことが大事なんですが、ここでポイントがあり、同じ単語を何度か違うシチュエーションで出会うことにより、定着率が高まります。大学受験の単語帳みたいなものでもなかなか覚えられないのは、同じ単語を同じシチュエーションで繰り返すだけだからです。

それから、覚えなければいけない単語と覚えなくてもいい単語を振り分けることです。出会った単語の全てを覚える必要はありません。

それと、単語を覚えると言うのも次のような段階があります。

(1)全然見覚えがない。
(2)見覚えはあるけど、意味が分らない。
(3)何となく意味が分るような気がする。
(4)ほぼ対応する日本語の訳語が言える。
(5)細かい意味まで分かる。
(6)英語で説明できる。
(7)自由に使いこなせる。

それで、単語を覚える時、多くの人は(1)か(2)の段階の単語を一律に(4)か(5)の段階に引き上げることだけしか考えない人が多いです。

ですから、単語を一つ一つ片付けるのではなく、(1)の段階の単語が(2)に上がっただけでも一つのステップは踏んでいるんです。そして、これも
多くの人が見逃しですが、(4)や(5)の段階の単語は既に覚えているものとして振り返らないことが多いんですが、これも平行して(6)や(7)の段階まで引き上げるようにしましょう。

これは他の回答者もはっきり言及していませんでしたが、無意識のうちにやっているはずなんです。

他の方も仰っていますが、単語は1回や2回調べただけでは覚えられるものではありません。何度も繰り返すことが大事なんですが、ここでポイントがあり、同じ単語を何度か違うシチュエーションで出会うことにより、定着率が高まります。大学受験の単語帳みたいなものでもなかなか覚えられないのは、同じ単語を同じシチュエーションで繰り返すだけだからです。

それから、覚えなければいけない単語と覚えなくてもいい単語を振り分けることです。出会った単語の全てを覚える必要はありません。

それと、単語...続きを読む

QVCでクラスのメモリ配置の解析

昔どこかのサイトで、クラスのメンバのメモリ配置を出力させていたのを見たことがあるのですが、VCでも同じことができますか?
メンバ関数や仮想関数やテンプレートがどう配置されるのかを知りたいのです。クラスのサイズとメンバのアドレスを出力させてもいいのでしょうが、継承していたりすると結構面倒なので、出来ればコンパイラに吐かせたいです。
回答よろしくお願いします。

Aベストアンサー

お望みの事は多分、以下の方法で出来るハズ。。。

「プロジェクト」→「~のプロパティ」→「構成プロパティ」→「リンカ」
→「デバッグ」→「マップ ファイルの生成」を(はい)に変更し、マップファイル名を指定。

これでマップファイルが生成されます。

ただ、見た限りクラスのサイズは分からなさそう。

ちなみに、なぜリンカのオプションなのかというと、関数をどのアドレスに配置するか決めるのはリンカのため。。

マップファイルの見方は、GOOGLEで「visual studio マップファイル 見方」で検索すると、3番目位に出てきました。

参考URL:http://nga78n.hp.infoseek.co.jp/whisper2.htm

Q英語、中国語の情報量の差

twitter の140文字制限って英語でも中国語でも一緒ですよね?

例えば日本語でいうと同じ文字数で英語の倍の情報量はあると思います。
私は中国語できないのでイメージしづらいですが、それ以上の情報量ありそうな気がします。

英語、中国語できるかた、そのへんどうでしょうか?

Aベストアンサー

では短い文章で一例を。

(英)I love you.(11文字)
(日)君が好きです。(7文字)
(中)我愛[イ尓]。(4文字)※[ ]内は一文字

確かに文字数だけ見ると、おっしゃる通り、表意文字である漢字のみを使う中国語の凝縮度はかなりなものではないでしょうか。

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

こんにちは。
Win2000環境 VC++6を使用してあるアプリケーションを開発してまして
そのアプリ終了時に、確保したメモリを開放しているのですが
「すべてのメモリを開放できませんでした」というような表示がされてしまいます。
(この表示文字自体は、そのアプリの仕様です。エラーチェックしてくれています)

自分ではmallocしたデータは全て開放しているつもりですが
どのメモリ(変数)が開放し損ねているのかわからずに困っています。
VCのデバッグモードを使用して処理をたどってみても、場所が特定できません。

mallocしている部分をコメントアウト等して
ちょっとづつでも場所を特定できればいいのですが、
諸事情により(プログラムの処理上)それができない形になっています。

皆さんは、メモリを開放させる処理で、どこかメモリを開放し損ねている場合
どのようにその場所を突き止めているのでしょうか?

VC++のデバッグモードの何かしらの機能か何かで
その場所を表示させるような事なのできないのでしょうか?

ちょっとわかりにくい説明ですが、
ご存知の方、どうぞよろしくお願い致します。

こんにちは。
Win2000環境 VC++6を使用してあるアプリケーションを開発してまして
そのアプリ終了時に、確保したメモリを開放しているのですが
「すべてのメモリを開放できませんでした」というような表示がされてしまいます。
(この表示文字自体は、そのアプリの仕様です。エラーチェックしてくれています)

自分ではmallocしたデータは全て開放しているつもりですが
どのメモリ(変数)が開放し損ねているのかわからずに困っています。
VCのデバッグモードを使用して処理をたどってみても、場所が特...続きを読む

Aベストアンサー

#2 です。遅くなりました。
下記のイメージです。
void *mymyMalloc(size_t size, char *name)
{
/*
malloc() を実行して、ポインタを得る。
成功したら、このポインタと size, name を(global 変数でリスト形式で)記憶して行く。
name は、"呼んでいる関数名:変数名"の文字列。
必要なら、この処理を逐一 log (text) file に書き出す。
*/
}
void mymyFree(void *ptr)
{
/*
記憶しているリストを見て、ptr とポインタの一致したものがあるなら、
リストから削除する。
free() を実行する。
*/
}
最後にアプリケーションを終る際、リストを見て、解放洩れがあるかを調べる。

Q翻訳した時の量(日本語と英語の比較)

同じ内容の文章を翻訳した場合、日本語と英語ではどちらが量は多くなりますか?
日本語と中国語の場合は歴然としてるからいいんですが、英語については、
「日本語の方が多い」
と主張する私と、
「みんなそう思っているらしいけど、実は英語の方が多いそうだ」
と娘が譲らないので、Gooで聞いてみようということになりました。
どなたかお願いします。

Aベストアンサー

英語と日本語を並べて記事にする翻訳の仕事をしたことがあります。
英語と日本語、共に同じぐらいの記事スペースを与えられて、同じぐらいの文字数でと指定されました。直訳すると日本語は長いですが、漢字を使ったり、「私」などの文字を省略できるので、文字数を短くすることができます。ですから、翻訳本を同じ厚さにすることも可能だと思います。

例えば「I like you.(8文字+空白2文字)」を和訳すると、
・わたしは あなたが すきです(12文字)
・私は あなたが 好きです(10文字)
・あなたが 好きです(8文字)
・好きです(4文字)

どれも前後の文章で誰が話しているかを入れれば、長くても短くても意味が通じます。英語はほとんどの場合、省略できません。

でも英語は半角「aa」で2文字入りますが、日本語は同じスペースで「あ」と1文字しか入りません。多分、文字数だけ数えると英語の方が多くなると思います。

なんだか説明していて訳が分からなくなってきました。分かりにくかったら補足してください^^;。トリビアの種で調べて欲しいですね、このネタ。

英語と日本語を並べて記事にする翻訳の仕事をしたことがあります。
英語と日本語、共に同じぐらいの記事スペースを与えられて、同じぐらいの文字数でと指定されました。直訳すると日本語は長いですが、漢字を使ったり、「私」などの文字を省略できるので、文字数を短くすることができます。ですから、翻訳本を同じ厚さにすることも可能だと思います。

例えば「I like you.(8文字+空白2文字)」を和訳すると、
・わたしは あなたが すきです(12文字)
・私は あなたが 好きです(10文字)
・あなたが...続きを読む

QVCでコンパイラ実行時に警告を出す方法

VCで

#error ...

とすると、コンパイルを失敗させて、エラーメッセージを出せますが、コンパイルは継続するが、メッセージだけは出すような方法は無いのでしょうか。

#ifndef USE_FUNC_A

#warning この設定だとここの機能は使えません

#endif

こんな感じのことができないでしょうか。

Aベストアンサー

#pragma message( "hi there." )

Q放射線量 を英語でなんと言いますか?

今ニュースでさかんに出てきている「放射線量」は英語でなんと言いますか?

radioactivity でもその意味を含みますか?

Aベストアンサー

福島原発のような場合に使われる用語(放射線量)は amount of radiation あるいは radiation levels (levels of radiation) のいずれかです。

dose (of radiation) は医療などで使われる言葉で被爆量のような意味になります。radioactivity は放射能のような意味になります。いずれも「放射線量」の訳としては少し意味がずれて来ます。

Q【VC++6.0(MFC)】スタックメモリサイズの変更方法

いつも大変お世話になっております。
VC++初心者です。

スタックメモリサイズがデフォルトで1Mが設定されているようですが、
それを確認、及び、変更する方法を教えていただけませんでしょうか。
(具体的には、1.0Mから0.5Mにしたいです。)

ちなみに、某サイトで
「プロジェクトのプロパティ→リンカ→システム→スタックのサイズの設定」
で変更可能であるとあったのですが、「プロジェクトのプロパティ」が何を指すのか分かりませんでした。
お手数ですが、よろしくお願いします。

Aベストアンサー

それはおそらくVS2002以降の場合ですね。
VC++6.0では、プロジェクト(メニュー)→設定→リンク(タブ)→アウトプット(ドロップダウンリストボックス)→スタックアロケーション→予約がスタックサイズです。
Debug、Release個別に設定できますので注意してください。

リンカのデフォルト値が使われるので、1MBかどうかの確認はできません。
ですが、普通にVC++のリンカを使っていれば1MBです。
http://msdn.microsoft.com/ja-jp/library/8cxs58a6.aspx

Q「ちなみに、○○県では生産量3位です」 は英語でなんと言いますか?

「ちなみに、○○県では生産量3位です」
は英語でなんと言いますか?

Aベストアンサー

For your information, OO prefecure has the third amount of production.

QVC++2008で作ったプログラムがXPで動作しない

Windows8.1上でVisualStudio2008を使っています。
作成したexeはWin8.1上で動作します。
これをXPで動かそうとすると動作しません。

ネットを参考に

vcredist.exe

をダウンロードしましたが、結果は同じでした。

解決方法はありますか

Aベストアンサー

C++ 2008 は SP無 SP1 どちらでしょうか?
☆SP無
https://www.microsoft.com/ja-jp/download/details.aspx?id=29
☆SP1
https://www.microsoft.com/ja-jp/download/details.aspx?id=5582
のランタイムをインストールしてみましたか?


人気Q&Aランキング

おすすめ情報