malloc分配0个字节


#include "pch.h"
#include <iostream>
#include <vector>
#include <ctime>
#include<algorithm>
using namespace std;


namespace _nmsp1
{
	//malloc来分配0个字节
	

	void func()
	{
		//真正要搞懂分配0个字节时,,malloc到底干了什么,,只有去读malloc的源码了。
		void *p = malloc(0); //new调用的也是malloc,所以
		//char *p = new char[0];
		char *q = (char *)p;

		//即便malloc(0)返回的是一个有效的内存地址,你也不要去动这个内存,不要修改内容,也不要去读;
		strcpy_s(q, 100, "这里是一个测试"); //这行导致程序出现暗疾和隐患;

		//有些编译器是在free时会报错,有些编译器是在分配0个字节时就可能会报错了,在
		//这里,vs2017malloc 0个字节时,返回了一个有效指针,不是一个空指针,但是在free时出现了异常。
		free(p);


		int abc;
		abc = 1;
	}
}

int main()
{	
	_nmsp1::func();	
	return 1;
}

//free时出现异常。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值