堆操作,malloc

PS:堆空间缺省值都是cd,栈空间缺省值都是cc

内存有四区:栈、全局(静态)、常量、除此以外的空间暂时不能随意使用,但是通过malloc函数申请就可以使用了。

利用malloc申请一个int变量,注意:malloc在头文件<stdlib.h>中

int *p=(int*)malloc(sizeof(int));
*p = 1;
free(p);

这里解释一下malloc的含义,开辟出括号中表示的字节数的空间,并返回指向这块空间的void*型指针,所以在具体要malloc什么类型的时候,前面要强制转化一下。不用这块空间的时候记得 free(mallco返回的指针),将这块空间释放掉。

利用malloc申请一个数组变量,利用malloc申请数组的空间时,有一个优点,就是可以用变量的方式指定数组的大小。

int n;
	scanf("%d", &n);
	int *p=(int*)malloc(sizeof(int)*n);
	for (int i = 0; i < n; i++)
		scanf("%d",p+i);
	free(p);

 注意:free(p);中free了p指向的那块malloc内存,所以在程序中最好将p=NULL,不然p就是野指针,容易出错。

原文地址:https://www.cnblogs.com/ma77045728/p/6972587.html