char* buffer=malloc(sizeof(long))报错invalid conversion from'void*'to'char*'
时间: 2024-05-09 18:16:06 浏览: 237
这个错误是因为`malloc`函数返回的是`void*`类型的指针,需要进行类型转换才能赋值给`char*`类型的指针。改正方法如下:
```c++
char* buffer = static_cast<char*>(malloc(sizeof(long)));
```
或者可以使用`new`操作符来分配内存:
```c++
char* buffer = new char[sizeof(long)];
```
在使用完`buffer`后,需要使用`free`函数或者`delete`操作符来释放内存:
```c++
free(buffer); // 释放内存
// 或者
delete[] buffer; // 释放内存
```
相关问题
int *id = malloc(sizeof(int)); [Error] invalid conversion from 'void*' to 'int*' [-fpermissive]
这错误是因为 `malloc` 函数返回的是 `void` 指针,需要进行强制类型转换,将其转换为 `int` 指针。可以将代码修改为:
```
int *id = (int *) malloc(sizeof(int));
```
这样就能避免编译错误了。不过需要注意的是,在使用完 `id` 指针后,需要调用 `free(id)` 来释放动态分配的内存,否则会造成内存泄漏。
*T = malloc(sizeof(BSTnode));[Error] invalid conversion fromvoidto'BSTree{aka BSTnode}[-fpermissive
这个错误是因为 `malloc` 函数返回的是 `void*` 类型指针,需要将其转换为 `BSTnode*` 类型指针。
可以使用以下方式进行类型转换:
```c
*T = (BSTnode*)malloc(sizeof(BSTnode));
```
这样就可以将 `malloc` 函数返回的 `void*` 类型指针转换为 `BSTnode*` 类型指针,从而可以将其赋值给 `*T`。
需要注意的是,对于 `malloc` 函数返回的指针进行强制类型转换是一种比较常见的操作,但是如果转换后的指针类型不正确,可能会导致未定义行为。因此,在进行强制类型转换时应该非常小心,确保转换后的指针类型正确。
阅读全文