malloc函数和free函数

#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>

//malloc和free是c标准库中提供的两个函数,用以动态申请和释放内存
void main1()
{
	//while (1)
	//{
	//	void *p = malloc(1024 * 1024 * 100);		//空类型的指针,只保存空间地址即可
	//	Sleep(2000);
	//	free(p);									//根据地址释放内存空间
	//}

	void *p = malloc(0xffffffff - 99);				//分配一块指定大小的内存空间,生成一个空类型的首地址
	if (p == NULL)									//检测内存是否分配,为空值则为没有分配
	{
		printf("内存空间不足,没有分配内存空间\n");
	}

	system("pause");
}

void main2()
{
	int *p = (int *)malloc(sizeof(int));		//分配一个int类型元素大小(4字节)的内存空间
												//生成一个空类型的首地址(空指针),强制转换为指向int类型数据的指针
												//然后赋值给int类型的指针变量
	*p = 100;
	printf("%d\n", *p);

	free(p);
	//free(p);			//内存不能重复释放,p指向的内存空间或许被其他变量使用或者还未进行分配

	system("pause");
}

void main()
{
	int num;
	scanf_s("%d", &num);
	int *p = malloc(sizeof(int)*num);

	for (int i = 0; i < num; i++)				//按照数组的方式访问内存
	{
		p[i] = i;
		printf("%d,%x\n", p[i], p + i);
	}
	free(p);

	system("pause");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值