C言語なら俺に聞け 153at TECH
C言語なら俺に聞け 153 - 暇つぶし2ch987:デフォルトの名無しさん
20/01/14 18:01:20.77 vjAz2zAO0.net
32bit Windows の普通のプロセスのアドレス空間は2GB
OSやAPIを改造してFARポインタを扱えるようにするか
ロックアンロック方式のメモリ管理を自力で実装するか
そんなことをするよりは
素直にアプリのメモリ確保の方法を変えるのが早い
もちろん64bit化出来るならそれが一番

988:デフォルトの名無しさん
20/01/14 18:05:55.14 RxBpnTJ90.net
>>978
オーバーレイは同じメモリー空間のデータ/プログラムを入れ替えて実行する機能
メモリー空間の話であればバンク切替とかもあるし

989:デフォルトの名無しさん
20/01/14 18:13:13.94 Ae/uveiQ0.net
>>982
どうしても使ってる一部のライブラリが32bitで64bit化するのが無理でした。
>>983
そちらを調べてみようと思います。

990:デフォルトの名無しさん
20/01/14 18:15:32.64 Ae/uveiQ0.net
>>980-981
そうやっても必要な時にメインメモリに読み込んで使う必要がないですかね?
しかも上手くやりくりして読み込んでもそこで断片化の問題もありますし。
その場合プールを自分で管理するしかなさそうな気がします。途中でその話をしてましたが。

991:デフォルトの名無しさん
20/01/14 18:31:15.17 jSZPoIDP0.net
32bitOSで4GB以上のオブジェクトをメモリに読み込んでどうにかしろ、と言われたら。
最初に検討するのはファイルマッピングだろうなあ。それ以外だとやる気がおきない。
APIを叩く必要があるので、WindowsならCreateFileMappingとかMapViewOfFileとか。

992:デフォルトの名無しさん
20/01/14 18:32:25.86 Ae/uveiQ0.net
>>986
ありがとうございます。調べてみますね。

993:デフォルトの名無しさん
20/01/14 18:32:29.78 RxBpnTJ90.net
>>984
> そちらを調べてみようと思います。
いやいや、オーバーレイとかバンク切替とかは半分ネタだから今更そんなもん調べなくていいよw
>>985
> しかも上手くやりくりして読み込んでもそこで断片化の問題もありますし。
アホほどでかいサイズでなきゃそれほど問題にならないよ
> その場合プールを自分で管理するしかなさそうな気がします。途中でその話をしてましたが。
どうしてもでかい領域を確保/解放する必要あるならそれしかないように思う

994:蟻人間
20/01/14 18:39:12.20 JKuyIKmvd.net
どうしてそんなデカいデータが必要なんだろう。遺伝子情報でも操作してんのかな?

995:デフォルトの名無しさん
20/01/14 18:41:07.63 Ae/uveiQ0.net
>>988
>いやいや、オーバーレイとかバンク切替とかは半分ネタだから~
ネタでしたかw 了解しました。
>アホほどでかいサイズでなきゃそれほど問題にならないよ
細かいのと途中で500MBくらいを二つとかがあるので時々断片化のせいでmallocが失敗するんですよねえ…
>どうしてもでかい領域を確保/解放する必要あるならそれしかないように思う
とりあえず作業領域様に500MBの領域を確保して再利用すると他の部分でmalloc失敗はなかったですね。
仰るように小さい領域はかなり確保しても問題にならないですね。大きな領域用にメモリスペースを予め確保しておく方法がよいかもしれないと思いました。

996:デフォルトの名無しさん
20/01/14 18:45:58.67 SgRnb4BR0.net
>>990
メモリーマップドは、かなり癖があるから注意して使った方がいいよ
ロジックなどの作りは簡単になるけど、
下手をすると処理が一日で終わらないなんて平気で起きる

997:デフォルトの名無しさん
20/01/14 18:48:32.63 iQtyfXTR0.net
もう64bitが当たり前になってかなり経つ昨今、そんな案件ごろごろある
映像をリアルタイムでごにょごにょとか言われたら簡単にギガ単位のメモリ使う
稀有な例では無いけど32bit環境でやれって言われたらヤダナとは思う

998:デフォルトの名無しさん
20/01/14 18:55:05.49 Ae/uveiQ0.net
>>991
そうなんですね。了解しました。
>>989 >>992
詳細はあまり言えないのですがメモリ中に
動画データを一部展開しなければいけなくて
メモリ不足や断片化の問題で困ってました。
しかも周辺で使ってるライブラリが32bitで64bit化が難しくて。

999:蟻人間
20/01/14 19:02:49.75 JKuyIKmvd.net
そろそろ次スレ

1000:デフォルトの名無しさん
20/01/14 19:20:01.41 2s3ZuCDc0.net
8k240Hz動画だと1秒キャッシュするだけでメモリ消費24GBか
まあ今時わざわざCを使うなんて極限環境だけだからそういうこともあるよね

1001:デフォルトの名無しさん
20/01/14 19:23:27.41 SgRnb4BR0.net
>>992
無理かどうか分からないけれど、その32ビットの処理だけ抜き出して
外部プログラムにし、処理結果を受けとるみたいには出来ないのかな?

1002:デフォルトの名無しさん
20/01/14 19:27:10.09 Ae/uveiQ0.net
>>996
せめてDLLが別のプロセスモードとかで動いてくれればいいんですが…
よい案がないか引き続き考えてみますー

1003:デフォルトの名無しさん
20/01/14 19:33:22.57 SgRnb4BR0.net
次すれ、立てました
スレリンク(tech板)

1004:デフォルトの名無しさん
20/01/14 19:45:37.22 MAaOflfD0.net
>>978
ちょっと待てや
おまえ単一仮想記憶を前提に話してるか?
今や多重仮想記憶が当たり前で単一仮想記憶はかなり特殊な存在だぞ

1005:デフォルトの名無しさん
20/01/14 19:50:12.26 gkNCY9ap0.net
for (int i = 0; i < 1000; i++) {
puts("1000");
}

1006:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 149日 20時間 47分 30秒

1007:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch