本当にばかげた質問。ここに私のサンプルコードがあります:
#include <stdio.h>
#include <stdlib.h>
typedef struct sample {
int a;
int b;
} SAMPLE_T;
int main() {
int i, max = 4;
for (i = 0; i < max; i++)
{
SAMPLE_T * newsamp = (SAMPLE_T *)malloc(sizeof(SAMPLE_T));
printf("addr: %x\n", &newsamp);
}
}
malloc
ループを通過するたびに新しい変数を「作成」しようとしていますが、ヒープに新しい変数が作成されるため、これでうまくいくと思いました。だけど、なんかズレちゃったみたい。出力は次のとおりです。
addr: bfc29c4
addr: bfc29c4
addr: bfc29c4
addr: bfc29c4
私はどのようmalloc
に働いているのか理解していませんか?