• ベストアンサー

PC-98で拡張メモリを使えたら・・・。

YoshiMuの回答

  • YoshiMu
  • ベストアンサー率41% (96/229)
回答No.5

アッパーメモリの空きが37kですか。 config.sysで登録しているものの中でdevice=と指定されているものをdevicehigh=と書き換えてみるとか、autoexec.batの中で常駐ソフトをloadhighとかしてアッパーメモリに逃がすというアイデアではあまり救えなそうですね。 今更の質問ですみませんが、mallocで取得したいと思うメモリのサイズを教えていただけないでしょうか?mallocがうまくいかないためにEMSを使用するというのは、あまり良いアイデアとは思えないもので...。 一応EMSに関わる説明のページをお知らせしておきますけれど、理解しにくいようなら補足しますので。

参考URL:
http://www2.muroran-it.ac.jp/circle/mpc/pc98dos/ems/ems.html
garigai
質問者

お礼

早急な対応だったため、今回はハードディスクに逃がす方法をとりました。 いろいろアドバイスをいただきましてありがとうございました。メモリに関しては、じっくり考えていきたいと思っています。わからないことがまた出てきたらよろしくお願いいたします。

関連するQ&A

  • malloc使用後のメモリアロケーションエラー(MS-C7.0)

    初めて投稿させていただきます。 現在PC:98 OS:MS-DOS 言語:MS-C7.0のhugeモデル という環境で プログラミングを行っております。しかし、config.sys,autoexec.batを 工夫してもメモリ不足を補えず、変数と動的にすることにしました。 c言語のテキストを参考に kansu() { char *p; p=(char *)malloc(256*256*sizeof(char)); if(p=null) printf("メモリ確保に失敗"); ・ ・ free(p); } とすると kansu終了直後に"メモリアロケーションエラー"がでます。 自分ではどこが悪いのわからず、ここでお聞きすることにしました。 上記の中の原因、もしくは原因と考えられることを教えてください。 よろしくおねがいします。

  • メモリのセグメント違反の解決方法を教えてください。

    こんにちわ, 現在プログラムを作成しているのですが,Segmentation Faultが出て困っています。 そのセグメント違反が出ているのがmallocの中(PCインナーの関数)で普通ならmallocの返り値がNULLかそれ以外かということになりますが,それ自体も中でセグメント違反が起こるので帰ってきません。 MALLOC_CHECK_=1によってその触っているポインターを見ると, free(): invalid pointer 0x93c5380! free(): invalid pointer 0x93c5c18! とでるので,おそらくmallocのなかで必要なくなったポインターをフリーをしていると考えられるのですが, gdbのwatchpointでそのアドレスを指定してみてみると,メインに入る前にそのポインタ自体をいじっている関数も内部的な関数みたいでどこをなおすとセグメント違反が直るのかわかりません。 このようなメモリ問題がおきたときどのようなツールや解決法があるのでしょうか。 よろしくお願いします。

  • 仮想メモリでない環境でのmalloc freeのよいアルゴリズムを教えてください

    ゲーム機の開発をしています。 仮想メモリがないので、mallocとfreeを不定の順序で繰り返しているとヒープ領域が断片化し、そのうちにメモリは不足していないはずなのにmallocできなくなります。ゲーム機のSDKにはそういうことを想定しているのか malloc、free の代替関数を設定できるようになっています。そこで、代替関数を用意しようと考えていると考えています。 完全に断片化をさけるには、mallocした逆順にfreeするとか使い方の工夫をしないと無理とは思いますが、通信系のライブラリにの内部などでmallocしていたりして完全にはこちらの思うとおりにはできません。テクスチャーなどの常駐でなるべく多くのメモリを使いたいので、ヒープ領域はできるだけ小さくすませたいのです。どんなアルゴリズムでも、ある程度の断片化はさけられないと思いますが、malloc、freeのよいアルゴリズムが紹介されているところがありましたら、御教えください。使われ方との相性があると思いますので、複数のアルゴリズムが紹介されていればうれしいです。

  • C/C++言語のメモリについて

    C言語でメモリを2種類?に分けると、スタックとヒープがあります。 ヒープは mallocなどで確保し、freeで解放しますがスタックは解放する必要がありません。 そのスタックは通常、何バイトまで可能なのでしょうか? あと関数外のファイルの先頭に int[1000000];とした場合、このメモリはmallocで確保していませんが、 どこに作られるのでしょうか? 私のパソコンはメモリが2GBでWindows2000ですが、CやC++で最大、何バイトまでメモリが使えますか? また、一番多くメモリを確保できるなら、OSはなんでも構いません。 解釈等も間違っていたらご指摘していただきたいです。

  • メモリ破壊で困っています。

    学生です。 現在、cの課題プログラムを作成していて、メモリ破壊と思われる現象で困っています。具体的には、 mallocである構造体へのポインタの3次元配列を確保したはずのものが(malloc時にNULLは返ってきていない)、その後、関係のない関数を呼んだ瞬間にその配列の値が書き換えられている。もしくはアクセスできなくなるといった状況です。 gdbで調べてみたところメモリを確保してから破壊されるまでにfreeはしていません。「関数を呼んだ瞬間に」値が変わるというのは原因がまったくわかりません。 どなたか心当たりある方、ぜひともアドバイスをよろしくお願いします。

  • Win32APIでのメモリ管理について

    C→malloc関数 C++→new演算子 Win32API→GlobalAlloc関数 とWin32APIでのメモリ管理の方法にはいろいろありますが、どれを使うのが一番実用的なのか、どれが一番効率的なのかが知りたいです。 あとWin32APIにはHeapAllocという関数もあるようですが、上記の3つは使わずにこの関数を使用したほうがよいのでしょうか。

  • malloc関数によるメモリの確保

    C初心者です。 malloc関数によるメモリの確保に関して教えてください。 2次元配列のサイズに対してmalloc関数の引数値をたとえば、 (double*)malloc(datasize*sizeof(double)) などとしメモリ領域を確保すると、メモリアドレスはデータのサイズ によらず一定 1234044、1234048となります。 データサイズを大きくし、datasize*sizeof(double)が16Kバイトを超えるとcmd.exeがエラーとなり落ちます。 デバックモードで実行すると 「"System.AccessViolationException"のハンドルされていない例外が不明なモジュールです。で発生しました。 追加情報:保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリがこわれていることが考えられます」 というメッセージがでます。 コンパイラはExpressEdition2008です。 この現象を回避するにはどうすべきか、なぜこのようなことが起こるのかご教授ください。 よろしくお願いいたします。

  • 自アプリ内のメモリを管理したい

    こんにちは。 現在C/C++でプログラムを組んでいます。 C/C++でメモリを確保、開放するにはmalloc、new、free,deleteを使うわけですがアプリケーションが開始された時点で、ある一定のメモリを確保しておいてそのメモリから分け与えたりデフラグしたりして自分のアプリで使うメモリを管理したいと思っています。 BYTE* g_allMemory;//グローバル変数 g_allMemory = new BYTE[1024]; プログラムを実行した時点でこのようにメモリを確保しておき要所要所で自作関数を利用してメモリを分け与えたりデフラグしたりして使えるようにしたいのです。 しかしデフラグした瞬間に変数のアドレスがずれてしまって使い物になりません。 これを解決したいのですがアドバイスやお勧めのホームページや参考文献などがあったら紹介をお願いします。

  • メモリ確保の謎。

    C言語のメモリの確保の所でふと疑問に思ったのですが、 malloc,calloc,realloc,memset,memcpyなどの関数を使うときって #include <stdio.h> #include <stdlib.h> #include <memory.h> #include <malloc.h> とか書かないといけないと本にはありますが、#include <stdio.h>だけで なんのエラーにもならずに実行できてしまうのはなぜでしょうか? 実際のプログラムにはmallocとreallocしか使ってないのですが、#include <stdio.h>でできてしまいます。 でも教科書には他にも書かなきゃいけないとかいてありますが、なぜ書かなくても実行できてしまうのでしょうか?

  • メモリの掃除屋さんを使っても。。。

     表題ソフト使用の上、積載メモリ320MB。 こまめにメモリクリーンしてやるのに、 「メモリ不足です。アプリケーションを終了してください」度々とか、いきなりフリーズ。。。こう言った現象が、大して減りません。 OS=Win98Seの限界なのでしょうか? 同時起動してるソフトは ・ノートンインターネットセキュリティ ・ノートンアンチウイルス 位で、ここにMS-Office2000を幾つか開 いています。 そして、メモリ不足を引きこしやすいのが、 ホームページビルダー(ver7.0)。これって、 そんなにメモリ喰いソフトでしたっけ?