学习项目:
学习堆的创建(malloc)和释放(free)。
问题描述
"void *" 类型的值不能用于初始化 "char *" 类型的实体
#include<stdio.h>
char heap_buf[1024];
int pos = 0;
void* my_malloc(int size)
{
int old_pos = pos;
pos += size;
return &heap_buf[old_pos];
}
void my_free(void* buf)
{}
int main()
{
char ch = 65;
int i;
char *buf =my_malloc(100);
unsigned char uch = 200;
for (i = 0; i < 26; i++)
{
buf[i] = 'A' + i;
}
}
原因分析:
在Visual Studio2022中,所创建的文件都是.CPP文件,也就是C++文件。在C++中void类型不能用来初始化char 类型的实体,但是C语言不强制转换void*不会报错。
解决方案:
1、在第20行,对void * 进行强制类型转化
或者
2、将.CPP文件改为.C文件。
char *buf =(char *) my_malloc(100);
版权声明:本文为weixin_45902201原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。