- 我的arduino代码在分配内存时出现了以下错误:
解决方案
将
res = malloc(sizeof(char) * len + 1);
改为
res = (char*)malloc(sizeof(char) * len + 1);
原因
- 指针的本质就是一个int数据变量,
- 对于void *,可以转换为任意类型指针。
- void* 不能用于赋值,因为没有记录一个值在内存中size的大小
// https://www.coder.work/article/1562140的例子
char* pChar;
void* pVoid;
pChar = (char*)pVoid; //OK in both C and C++。C++ 被设计为比 C 更类型安全,因此您不能(自动)转换为另 一种指针类型。(C++ is designed to be more type safe than C, therefore you cannot (automatically) convert from void* to another pointer type.)
pChar = pVoid; //OK in C, convertion is implicit