真是愚蠢的问题。这是我的示例代码:
#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
工作吗?