C++での動的メモリ割り当てに関する質問があります。 私が提案しようとしている問題の性質は、単純なC++テクニックを使用して解決するのが簡単だと理解していますが、この特定の練習ではCのようなアプローチを使用する必要があります。 私は例を設定してみましょう:C++の動的割り当てメモリ内での動的メモリ割り当て
私は、次の構造体があります
typedef struct A{
B *b;
int a;
}
typedef struct B{
C *c;
int x;
}
typedef struct C{
int y;
}
とのこのメインを想定してみましょう次のよう
int main(){
A test;
test.a = 1;
test.b = (B*)calloc(2,sizeof(B));
test.b[0].c = (C*)calloc(2,sizeof(C));
test.b[0].x = 2;
test.b[0].c[0].y = 3;
test.b[0].c[1].y = 4;
test.b[1].c = (C*)calloc(2,sizeof(C));
test.b[1].x = 5;
test.b[1].c[0].y = 6;
test.b[1].c[1].y = 7;
}
だから私の質問は: どうなりますか? test.b[i].c
に割り当てられたメモリブロックが、以前にtest.b
に割り当てられたメモリブロックと重複する可能性はありますか? それが起こる可能性がある場合、どうすればそれが起こらないようにすることができますか? 可能であれば、calloc()
がメモリを割り当てる方法を正確に説明できますか?私は数値の例を本当に感謝します。
また、callocから返されたポインタはNULLではないことを確認することもできます。それはより安全です。 –