C言語関係掲示板

過去ログ

No.969 構造体のメンバの動的割り当て

[戻る] [ホームページ]
No.12487

構造体のメンバの動的割り当て
投稿者---egret13(2004/02/05 12:31:11)


構造体配列のメンバにint型配列を使っています。

#define N 10
struct data{
int a[N][N];
...
} DATA[N];
....

この配列を動的割り当てをしたいのですが、
malloc(sizeof( ? ));
の括弧内をどう書いたらうまくいくのでしょうか。
ただし構造体配列も、そのメンバのint型配列も
ある個数は既に確保されています。
考えてみると、無理な気もしますが、
どなたか教えて頂けませんか。

No.12488

Re:構造体のメンバの動的割り当て
投稿者---nop(2004/02/05 12:44:49)


>ただし構造体配列も、そのメンバのint型配列も
>ある個数は既に確保されています。

この言葉の意味する所がわからないのだが?

No.12489

Re:構造体のメンバの動的割り当て
投稿者---おでん(2004/02/05 13:11:52)


>構造体配列のメンバにint型配列を使っています。
>
>#define N 10
>struct data{
> int a[N][N];
> ...
>} DATA[N];
>....
>
>この配列を動的割り当てをしたいのですが、
>malloc(sizeof( ? ));
>の括弧内をどう書いたらうまくいくのでしょうか。
>ただし構造体配列も、そのメンバのint型配列も
>ある個数は既に確保されています。
>考えてみると、無理な気もしますが、
>どなたか教えて頂けませんか。

#define N 10

typedef struct data{
        int a[N][N] ;
} DATA[N] ;

struct data * ptr = malloc(sizeof(DATA)) ;


じゃダメですか?・・・gccだとちゃんと4000バイと取ってくれますが。
-------------------->
movl $4000, (%esp)
call _malloc
movl %eax, -16(%ebp)
<--------------------

No.12492

Re:構造体のメンバの動的割り当て
投稿者---NykR(2004/02/05 15:00:39)


構造体の中にある、int[N]の配列aの動的確保(サイズ n)
#define N 10
struct data{
    ...
    int a[N][N]; /* 最後のメンバにする */
};

struct data *DATA = malloc(offsetof(struct data, a) + sizeof(int[N]) * n);

ただし、規格外です。
はじめからポインタにしておいた方がいいでしょう。

No.12493

Re:構造体のメンバの動的割り当て
投稿者---YuO(2004/02/05 15:58:36)


#define N 10
struct data{
    ...
    int a[N][N]; /* 最後のメンバにする */
};

struct data *DATA = malloc(offsetof(struct data, a) + sizeof(int[N]) * n);
ただし、規格外です。


規格内でやるなら,
#define N 10
struct data {
    /* ... */
    int a[][N]; /* flexible array member (C99) */
};

struct data *DATA = malloc(sizeof(struct data) + sizeof(int[N]) * n);

といったところでしょうか。

No.12577

Re:構造体のメンバの動的割り当て
投稿者---egret13(2004/02/09 12:19:44)


御返答ありがとうございます。
お礼が遅れたことをお詫び申し上げます。
おかげさまでうまくいきました。
つたない言葉で申し訳ありませんでした。