我正在使用malloc
来创建一个结构。当我试图在main中创建结构时,malloc
返回两个不同的指针,但是当我在函数内部执行相同操作时,malloc
会返回相同的指针两次。这是我的代码:
typedef struct etf_t{
int number;
char* symbol;
float initialPrice;
List stocks;
}*Etf;
Etf etfCreate(int number, char* name){
if (name == NULL || number <= 0){
return NULL;
}
Etf etf = malloc(sizeof(*etf));
if (etf == NULL){
return NULL;
}
etf->stocks = listCreate(stockCopy, stockDestroy);
if (etf->stocks == NULL){
free(etf);
return NULL;
}
etf->number = number;
etf->symbol = copyString(name);
etf->initialPrice=0;
return etf;
}
在函数内部我称之为:
Etf etf=etfCreate(etfID,etfName);
然后将其插入Map(通过指针)。我没有在代码中的任何地方销毁etf
,所以我不知道为什么malloc
在下一个函数调用中使用相同的地址。
编辑:我在malloc之后添加了printf,在这里我得到了:
地址:000000000023FCF8地址:000000000023FCF8
打印命令是
printf("Adrress: %p\n",(void*)&etf);
enter code here
您打印指针的代码不正确。
printf("Adrress: %p\n",(void*)&etf)
etf
是一个指针,所以&etf
会给你指针存储在内存中的地址。这两个电话都是一样的。
你只想打印指针,所以试试:
printf("Address: %p\n",(void*)etf)