私はCが初めてで、構造体とポインターでのmalloc()の使用を理解しようとしています。ここに私が書こうとしているプログラムのスニペットがあります
typedef struct
{
char *id;
char *ocup;
char cj[15]; //data to fill the vector
} T1;
typedef struct
{
T1 *a1;
T1 *a2;
} T2;
T2* Aloc(int mp)
{
T1 *p,*s;
T2 *af = (T2*)malloc(sizeof(T2));
if(af == NULL)
return 0;
af->a1 = (T1*)malloc(sizeof(T1) * mp);
if(af->a1 == NULL)
return 0;
// trying to go through the freshly created vector
// but without success
for(p = af->a1, s = p + mp; p < s; p++)
af->a2 = p;
return af;
}
// mp = size of the struct
T1 *a1
ベクトルの開始アドレスです。
T2 *a2
それの終わりです(...または、ベクトル内のどこでも終了する可能性があります)
上記のコードをコンパイルしようとすると、コンパイラがフリーズします。私はアイデアを使い果たしました。私は何を間違っていますか?:(
ありがとう!