#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时出现异常。