• ベストアンサー

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

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

質問者が選んだベストアンサー

  • ベストアンサー
  • tanma3
  • ベストアンサー率58% (14/24)
回答No.4

>構造体のメモリ確保をする際に、処理系はVC++ 6.0なので >キャストしなければならないのですがどうすればよいか分かりません。 やりたいことは、"動的に確保したメモリを構造体として利用したい。"ということでしょうか? そう仮定すると、手順としては。 1.構造体に必要なByte数を計算する。(sizeof等で) 2.必要分のメモリを確保する。(vc++ならnewかな?) 3.確保したメモリ(帰ってきたvoidポインタ)を構造体ポインタとしてキャストする。 4.ポインタとして構造体メンバにアクセスする。 となります。 やりたいことが違ってたらごめんなさい。

その他の回答 (5)

  • S117
  • ベストアンサー率40% (18/45)
回答No.6

No.5です。豪快に間違えてました。すみません。 mystruct *s; s = new mystruct(); C++だから、structはいらないですね。

  • S117
  • ベストアンサー率40% (18/45)
回答No.5

なんか、VC++6.0でCを書いてるだけという気もしますが、C++だと仮定して答えます。 構造体を mystructとして struct mystruct *s; s = new mystruct(); で良かったような。 >構造体にはint型とchar型が入っているのですがこの場合はどのようにキャストすればよいのでしょうか? 中身は関係ないのです。構造体を確保すれば、構造体のもつ変数はすべて確保されたことになります。 おまけで、Cの動的確保を struct mystruct *s; s = malloc(sizeof(mystruct));

回答No.3

 こんにちは。以下のどちらかに該当していますか? //構造体 typedef struct tagTEST { int i; char ch; }TEST, *LPTEST; //mallocの場合 void main() { //割り当て・キャスト TEST* p = (TEST*)::malloc(sizeof(TEST)); //使う p->i = 0; p->ch = 0; } //GlobalAllocの場合 void main() { //割り当て HGLOBAL hMem = ::GlobalAlloc(GMEM_MOVEABLE, sizeof(TEST)); //メモリのロック・キャスト TEST* p = (TEST*)::GlobalLock(hMem); //使う p->i = 0; p->ch = 0; }

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

「構造体のメモリを確保するためにキャストしなければならない」ような処理系がこの世に存在したとは思えないなぁ. どういうことをしたいんでしょうか?

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

処理系がVC++ 6.0「だから」 キャストしなければならない、という 事情がうまくのみこめません。 可能であれば、そのあたりの事情を説明していただけますか? なお、「どのように」キャストすればよいか、 と聞かれましても、ご自身がそれを「何型として」 使いたいかがわかりませんので、なんともお答えできないです。