0

私はこれを達成しようとしています...構造体の配列を保持する単一のコンテナと、これらの構造体のそれぞれの内部には、整数を表す単一のint配列があります... 12,345はint配列[5] = {内にあります1,2,3,4,5}

これを実装できる方法は何ですか。この実装に関する私の主な問題は、すべてのポインターがどこを指しているのかわからなくなり、ガベージデータがいたるところにあり、セグメンテーションフォールトがいたるところにあることです。そうそう、すべてが動的です。コンテナがmallocされている場合、その内部に構造体を持つ構造体コンテナがある場合、私が推測するほとんどすべてのものは、その内部の構造体も自動的にmallocされるので、私の推測は次のようになります

コンテナ->struct.array

わからない????

4

3 に答える 3

0

完全に理解できたかどうかはわかりませんが、次のコードを見てください。

struct MyStruct {
    int *array;
};
struct Container {
    struct MyStruct *array;
};

割り当て部分は次のようになります。

struct Container c;
c.array = malloc(sizeof(struct MyStruct) * NUM_STRUCTS);

for (i = 0; i < NUM_STRUCTS; ++i) {
    c.array[i].array = malloc(get_num_of_digits(12.345) * sizeof(int));    
}

私はこのコードをテストしていませんが、仕事をする必要があります:P. 幸運を。

于 2013-06-13T00:58:51.980 に答える
0

struct と contianer の malloc と free 関数を自分で記述し、contianer が必要なときやそのスペースを解放するたびにそれらを呼び出す必要があります。次に例を示します。

struct outside{
    struct inside *in;
};


struct inside{
    int *array;
};

struct outside *malloc_outside(size_t n) {
    int i;
    struct outside *o;
    o = (struct outside *)malloc(n*sizeof(struct outside));
    for(i=0;i<n;i++) {
        o->in = malloc(sizeof(struct inside));
        o->in->array = NULL;
    }
    return o;
}


void free_outside(struct outside *out) {
    free(out->in->array);
    free(out->in);
    free(out);
    return;
}

malloc_outside() の後に必要な数としての malloc() 配列のスペース

コンストラクタとデストラクタによって C++ で行う方が簡単です。

于 2013-06-13T01:09:58.790 に答える