• 締切済み

type

VBの構造体で確保できる長さが決まっているのですか? メモリオーバーでコンパイルが通らないのですが・・・

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

どんなエラーでしょう? 試したところいろいろ出たので。 エラーの内容によってはもしかしたら回避できるかもしれませんので。 ”動的なローカル変数が多すぎます”であれば動的配列にすることで回避可能です。

関連するQ&A

  • EnumとType

    VB初心者です。 EnumやTypeについてよくわかりません。 何に使用するのでしょうか? また両者の違いについてもよくわかりません。 どなたかご教授ください。 ちなみにEnumは構造体でTypeは列挙型という認識はあっていますか?

  • 構造体のメモリ確保のキャストについて

    構造体のメモリ確保をする際に、処理系はVC++ 6.0なので キャストしなければならないのですがどうすればよいか分かりません。 構造体にはint型とchar型が入っているのですがこの場合はどのようにキャストすればよいのでしょうか? お願いします。

  • 不要になった、普通の構造体の処理

    VB初心者です。スミマセン教えて頂けないでしょうか? VB 2005 の場合、構造体が不要になったときは何か処理が必要ですか? メモリから削除する処理とかしなくて良いのでしょうか? よろしくお願いします。

  • 構造体→文字列→構造体 をする方法

    VB6.0の話です。  不特定の構造体を文字列(String)に格納し、これを最初の構造体に戻す事はできませんか?  具体的には「共有メモリを使い構造体を文字列にして格納>別ウインドウで文字列を取得して構造体に戻す」と言う事をやりたいんです。  共有メモリに不特定の構造体をいれる方法でもいいんですが…VALIANTだとサイズが大きすぎて実用性がありませんし、違う主旨の質問をするのも良くないので回答はあくまで「構造体→文字列→構造体 をする方法」と言う事でお願いします。

  • 行数の変動にも対応したファイル読み込みのやり方

    学校でファイル読み込みの課題を今しているのですが、ファイルの行数が増えた場合にも対応していて、且つ無駄な領域を使わないようなファイル読み込みをするのに困っています。 流れとしては csvファイルから内容を読み込む ↓ カンマで分割し、構造体に格納 ↓ その格納した構造体を返す という動きをしたいのですが、構造体をmallocで動的にメモリ確保する時にも、行数の取得が必要になってきて・・・ 一度行数を調べてから、処理を行う方法を取るか、他のchar型配列か何かに一度全てを格納して、そのときにカウントした行数を使って構造体のメモリを動的に確保する・・・くらいまでは思いついたのですが、始め全てを格納する時点でもまた動的にメモリを格納する方法が思いつかなくて・・・・ やはりどこかで多めに領域を取り、そこに格納する手を使うしかないのでしょうか? ご教授お願いします。

  • アドレス格納のための二次元配列のメモリ動的確保

    アドレス格納のための二次元配列のメモリ動的確保 二次元配列のためにメモリを動的確保しなければならないのですが、 その配列に格納したいものが 「DATA型のポインタ」です。(DATA型はtypedefした構造体です。) プログラム実行中にmallocで確保した、数あるDATA型の構造体の、その先頭アドレスを リストアップするための配列です。 この場合、どのような形でmallocすればよいのでしょうか? 教えていただけるとありがたいです。よろしくお願いいたします。 -- たとえば m×n のint型の配列は、 ◆ int *i; ◆ i = (int *)malloc( m * n * sizeof(int) ); となりますよね。 この要領がでやるのが一般的にわかりやすいものだとするならその方法でやりたい (後発の人が自分のソースコードを読む可能性があるため)のです。 -- 同様にm×nの「DATA型のポインタを格納するための二次元配列」を動的確保したい場合、 ◆ DATA *d; ◆ d = (DATA *)malloc( m * n * sizeof(DATA) ); この文にどのように付け加えたら良いのでしょう? もうあと一歩な気がするのですが(笑)。しかし参考書等で勉強しましたがわかりませんでした・・・。 わかる方、どなたかよろしくお願いいたしますm(_ _)m あとこれだけ通ればコンパイルが通るんです!!!!! たぶん(笑)

  • 構造体のメンバのメモリ確保について

    構造体の中の一部のメンバだけをmalloc関数で メモリ確保したいのですがどのように宣言すればよいのでしょうか? vc++6.0を使用しています。 初歩的な質問ですみませんがお願いします。

  • c言語のmalloc関数、またrealloc関数

    c言語のmalloc関数は確保するメモリの領域を、配列としてのみしか処理出来ないのですか。 つまり、malloc関数で確保したメモリの領域を変数、また多次元配列、また構造体としては処理出来ないのでしょうか。 c言語のrealloc関数は以前の確保したメモリの領域から、確保し直したメモリの領域の場所が変わるかもしれないという事ですが、この場合の場所が変わるという意味は、メモリの領域のアドレスが変わるという事でしょうか。 また、以前の確保したメモリの領域に代入していたデータが使用出来なくなるという事でしょうか。

  • VC++のnewでNULLが返る

    現在VC++で3Dゲームのプログラムを作成中なのですが、プログラムの一番最初の部分で、ある関数を呼び出し内部で構造体を宣言、 その後にnewでメモリ動的確保を行うとNULLが返るようになってしまいました。 関数のソースはこんな感じです↓。 LPOBJ LoadObj( LPSTR filename ) {      LPOBJ lpObj;// LPOBJはOBJ構造体のポインタです      // 構造体メモリ確保      lpObj = new OBJ;//  この時点で失敗してNULLが返る      //      // いろいろと処理      //      return lpObj; } ↑この関数の戻り値をクラスのコンストラクタでメンバ変数にセットしています。 先日プログラムを動かしている時に急にこの状態(newでNULLが返る)になり、それ以来ずっとこの調子です。 (現在は)メモリーリークは起こしていません。(少し前までは大量に起こしていました) この状態になるともうメモリの動的確保はできないのでしょうか?

  • mallocによる確保外の領域への参照

    構造体をmallocにより動的確保を行っていたのですが、例えば typedef struct _point{ int x, y; } point; point *pelem_point; pelem_point = (point *)malloc(sizeof(point)*5); このように、point型の構造体を5つ確保するとします。 しかし、 (pelem_point+100)->x = 1; (pelem_point+100)->y = 2; printf("%d\n", (pelem_point+100)->x); printf("%d\n", (pelem_point+100)->y); とやったら、確保していない100個先のところも構造体として利用できました。 なぜなのでしょうか。 自分の考えではこのようになりました。 mallocによりヒープ領域から適当な空いているメモリのアドレスが渡されるため、そこからはヒープ領域より先に、限りがあるまで進めてしまうために確保外のサイズにアクセスしても使えてしまっている。 また、mallocにより確保した場合は使用中のラベルがはられるため他に侵されることはないが、先の例のようにmallocによって確保してない場合はいくら使用できたとしても、空いているとコンピュータでは認識されるため、何かヒープ領域を使う場合に勝手に上書きされてしまう可能性がある。 しかし、この考えでも、なぜ確保外の領域が構造体のサイズ分ずつ区切られているのか納得いきません。 わかる方いましたらよろしくお願いします。

専門家に質問してみよう