C言語なら俺に聞け 154

■ このスレッドは過去ログ倉庫に格納されています
2020/01/14(火) 19:32:30.16ID:SgRnb4BR0
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 153
https://mevius.5ch.net/test/read.cgi/tech/1566050562/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2020/01/14(火) 19:44:25.29ID:Xjyusg2Z0
2020/01/14(火) 20:20:26.03ID:Ae/uveiQ0
前スレのこれに質問です。
32bitアプリだとmallocで確保していくと2GB近くでエラーになりませんか?
頑張って色々施しても4GB近くが32bitだと限界じゃないんですかね?
もし回避策があるなら教えてください。

999デフォルトの名無しさん (ワッチョイ 7f36-///2)2020/01/14(火) 19:45:37.22ID:MAaOflfD0
>>978
ちょっと待てや
おまえ単一仮想記憶を前提に話してるか?
今や多重仮想記憶が当たり前で単一仮想記憶はかなり特殊な存在だぞ
2020/01/14(火) 20:30:37.98ID:MAaOflfD0
前スレ999本人だが
議論できるやついる?
2020/01/14(火) 20:44:32.62ID:XPzaribqM
paeのことかしら。それでもアプリが使えるメモリは4gb以下に制限されるみたいだけど
2020/01/14(火) 20:57:35.59ID:MAaOflfD0
paeじゃない
オーバープロセスのことだよ
2020/01/14(火) 20:59:32.15ID:vjAz2zAO0
アドレスを保持する変数が32bitなんだから
どう頑張っても4GBまで
実際は32bit Windowsの制約で2GBまで

あとは前スレ >>982 の方法しかない
2020/01/14(火) 21:02:41.42ID:m9Mcjsqu0
https://mevius.5ch.net/test/read.cgi/tech/1566050562/982
>FARポインタを扱えるようにするか

馬鹿いってんじゃないよ!このニワカ!死ね!百遍死ね!
「far/near ポインタ」は 16bit リアルモードでの用語だ
2020/01/14(火) 21:13:14.20ID:Ae/uveiQ0
しかし別プロセスにしようとどうしようと
結局データのアドレスは受けないといけないので
そのポインタ自体が32bitで管理されてる以上
その限界はどうしようもないような。
2020/01/14(火) 21:21:42.62ID:vjAz2zAO0
>>8
セグメントレジスタとセットで48bitで処理するって意味
(書かなきゃわからないですか?)

CPU的には可能だけどOS的にもコンパイラ的にも不可能だから実質不可能
2020/01/14(火) 21:22:29.52ID:vjAz2zAO0
ニワカはどっちだwww
2020/01/14(火) 21:31:07.55ID:S6Ak+Pxt0
32ビットだと大きいメモリは最初の方で確保して最後の方で解放するなぁ
あるいはプロセスを分けるか
2020/01/14(火) 21:32:43.12ID:m9Mcjsqu0
>>10-11
ではお聞きいたしますが、セグメントレジスタ16ビット+レジスタ32ビットのペアで指定した先は何ビット空間ですか?
IA-32 アーキであるかぎり、どうあがいても32bit 空間ではないでしょうか?PAE 搭載であってもユーザーからみえるのはやっぱり32ビットなのでは?
2020/01/14(火) 21:34:48.26ID:vjAz2zAO0
>>13
知らないなら黙ってろよ
2020/01/14(火) 21:40:51.41ID:RxBpnTJ90
多重仮想記憶ってプロセス毎に同じアドレス空間を提供するだけの話
(逆に単一仮想記憶はプロセッサのアドレス空間を分割してプロセスに提供する)
http://yougo.ascii.jp/caltar/多重仮想記憶
前スレの質問はアプリの話だからあんまり関係ないよ
オーバープロセスとか言うオレオレ用語はよくわからんけど…
オーバーコミットの話じゃないよね?
2020/01/14(火) 21:41:08.27ID:m9Mcjsqu0
>>14
私の質問に回答できないのですね…
IA-32 では、それが PAE を搭載していたとしても、ユーザーが一度に扱えるのは32ビットどまりですよ

>>10
>CPU的には可能だけど
CPU的にも不可能です
2020/01/14(火) 21:56:01.45ID:S6Ak+Pxt0
windows依存なら CreateFileMapping MapViewOfFile で32ビットより大きいのをやりくり
2020/01/14(火) 21:57:06.89ID:jSZPoIDP0
今、話題になっているのは32bitOSの場合であって、IA-32 どうこうは微妙に違う話にも思えるのは内緒。
ということで話を戻すと、例えば32bit版Windowsには、OS管理外メモリとして8Gだの16Gだの扱うことができるRAM-DISKアプリがあるわけで。
32bitアプリでも、セグメントレジスタに正しいセレクタ値をセットできるのであれば、4G超のメモリ空間を扱える、と言えなくもない予感がする。
2020/01/14(火) 22:02:55.12ID:vjAz2zAO0
386の時代から仮想アドレス空間は64TBだってのに
2020/01/14(火) 22:04:06.75ID:S6Ak+Pxt0
>>18
RAM-DISK使わんでもAPIには上位32ビット下位32ビットの64ビット指定できるから
2020/01/14(火) 22:05:55.54ID:Ae/uveiQ0
話の前提は、64bitOSで32bitプログラムを動作させる場合ですね。
2020/01/14(火) 22:09:55.66ID:iQtyfXTR0
できるならやり方を具体的に提示してくれよ
罵り合ってる内容が一切質問者に有益な情報じゃない
2020/01/14(火) 22:15:15.91ID:vjAz2zAO0
64bitOSなら32bitアプリで4GiBまで扱える(ように出来る)
これでいくらかは改善するのでは?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況