数値を大きくすると動かなくなる

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 数値を大きくすると動かなくなる

Re: 数値を大きくすると動かなくなる

#9

by みけCAT » 1年前

絵にかいた餅 さんが書きました:
1年前
エラーメッセージは
”外部シンボル"public:static int(*shift::nurse_work)[30])"(?nurse_work@shift@@2PAY0BO@HA)は未解決です”となっています。
メンバの定義ではなく、インスタンスの定義 (構造体の変数宣言) に static をつけるとどうなりますか?

Re: 数値を大きくすると動かなくなる

#8

by dic » 1年前

どこかに発見されていないバグがあるとしか
いいようがないですね

Re: 数値を大きくすると動かなくなる

#7

by 絵にかいた餅 » 1年前

コンパイルは通っているけど何も結果が出ずに終了するといった感じです。(staticをつけない場合)
一定の数というのは構造体に二次元配列を定義していて、構造体の数は100個、二次元配列の大きさは4*10で、表のテーブルとしては4000です。ただ、別の配列に一つ一つ置き換えていたり、ループ回数もかなり使ってはいます。

Re: 数値を大きくすると動かなくなる

#6

by 絵にかいた餅 » 1年前

関数名を間違えてるといったことはなかったです。
エラーメッセージは
”外部シンボル"public:static int(*shift::nurse_work)[30])"(?nurse_work@shift@@2PAY0BO@HA)は未解決です”となっています。下のURLからするとビルドができなかったのでコンパイルに何か原因ができた感じでですかね?

https://learn.microsoft.com/ja-jp/cpp/e ... w=msvc-170

Re: 数値を大きくすると動かなくなる

#5

by みけCAT » 1年前

「動かなくなる」というのは
・コンパイルが通らなくなる
・コンパイルは通るけど、実行すると異常終了する
・コンパイルは通り、実行でき、なかなか結果が出ない
どれですか?

また、「一定の数」というのはどの程度ですか?
数によっては、本当にメモリを使いすぎかもしれません。
目安として、1要素が4バイトの場合
1024×1024 → 4MiB
2048×2048 → 16MiB
8192×8192 → 256MiB
16384×16384 → 1GiB
32768×32768 → 4GiB
65536×65536 → 16GiB
となります。
同じ要素数・要素のサイズの配列を複数用いる場合、記憶容量もそれに応じて大きくなります。
32bitのプロセスだと、最大でも約4GiBくらいまでしかRAMを使えない可能性もあります。

Re: 数値を大きくすると動かなくなる

#4

by box » 1年前

外部シンボルが未解決っちゅうんは
配列のサイズの問題やなくて
関数名のスペリングが間違うてるとかいう感じで
あるはずのない関数を呼んでしもてる、とかとちゃうかな?
確認してみては?
あるいは、そのときのエラーメッセージを提示するとか?

Re: 数値を大きくすると動かなくなる

#3

by 絵にかいた餅 » 1年前

実はそれすでに試したのですが”外部シンボルが未解決です”というエラーが出てしまいます。

Re: 数値を大きくすると動かなくなる

#2

by box » 1年前

ソースコードが提示されてへんから何とも言えんけど、
配列をstaticにしてみるとか?

数値を大きくすると動かなくなる

#1

by 絵にかいた餅 » 1年前

現在GAを用いたナーススケジューリング問題について勉強しています。そこでは二次元配列を用いるのですが、配列の要素数を大きくすると動かなくなってしまいます。ある一定の数までは動くためプログラミング自体はできているとおもうのですが。。
いろいろ自分なりに考えて改良をしていったのですが、そもそも動かなくなってしまったりと、泥沼にはまってしまいます。
自分の考えとしてはメモリを使いすぎてしまっているのかなと思っているのですが、対処法がわかりません。
皆さんの考えをお聞きしたいです。よろしくお願いします。
(コードを載せようとしましたが500行を超えてしまっているため、お見苦しいかなと思い原因についてお聞きしました。)

ページトップ