对结构体指针使用malloc,成员内存空间申请问题
逗号君呐~ 2019-09-26 02:33:08 #include "stdio.h"
typedef struct //结点类型
{
int num; //编号
char name[9]; //姓名
} DataType;
typedef struct node //结点类型定义
{
DataType data; //结点数据域
struct node * next; //结点指针域
} ListNode;
typedef ListNode * LinkList;
int main(){
LinkList head;
printf("head=%d\n",head);
printf("head->next=%d\n",head->next);
head=(ListNode*)malloc(sizeof(ListNode));
printf("\n\n申请空间后\n\n");
printf("head=%d\n",head);
printf("head->next=%d\n",head->next);
}
以上代码运行结果:
head=1703740
head->next=2527232
申请空间后
head=7281184
head->next=-842150451
觉得有点看不懂,想请教一下几个问题:
1.申请空间前,head和head->next的地址都是一个正数,申请空间后,head的地址是一个正数,而head->next的地址是一个负数,这是为什么?
2.使用malloc给head申请空间时,指针next有分配到空间吗?
3.如果在使用了malloc后,直接用head->next=NULL,而不是用free(),会不会造成内存泄漏?如果是在使用malloc前呢?
4.另外还做了一个测试:
int *p;
printf("%d\n",p);
p=(int*)malloc(sizeof(int));
printf("%d\n",p);
运行结果是4215464和7733296,申请空间前后地址不同,但都是正数,这又是为什么?