本当にばかな質問です。ここに私のサンプルコードは次のとおりです。mallocが新しい変数を作成していないように見えるのはなぜですか?
#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
はどのように機能しているのですか?
その '本当の'コードでは、私は間違いなく無料で確実にしています。ありがとう。 – Pat
アドレスの印刷中は "%p"を使用する方がよいでしょう。 – Arun