学习堆的创建(malloc)和释放(free)。
问题描述
"void *" 类型的值不能用于初始化 "char *" 类型的实体
#includechar 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);



