用c++写:(char *)malloc(MEM_D_SIZE*sizeof(char));
时间: 2023-11-17 08:08:18 浏览: 114
在C++中,我们通常使用new和delete关键字来进行动态内存的分配和释放。因此,将(char *)malloc(MEM_D_SIZE*sizeof(char));转换为C++代码可以是:
```
char *ptr = new char[MEM_D_SIZE];
```
这行代码会分配一个大小为MEM_D_SIZE的char类型数组,并将其首地址赋值给指针变量ptr。需要注意的是,使用完该数组后,需要调用delete[] ptr;来释放该内存空间。
相关问题
用c++写:flieNum = (char *)malloc(MEM_D_SIZE*sizeof(char));
将flieNum = (char *)malloc(MEM_D_SIZE*sizeof(char));转换为C++代码可以是:
```
char *flieNum = new char[MEM_D_SIZE];
```
这行代码会分配一个大小为MEM_D_SIZE的char类型数组,并将其首地址赋值给flieNum指针变量。需要注意的是,使用完该数组后,需要调用delete[] flieNum;来释放该内存空间。
pullflowmonitor.cpp: In member function 'bool PullFlowMonitor::initModel()': pullflowmonitor.cpp:1223:99: error: cannot convert 'uint8_t* {aka unsigned char*}' to 'void**' for argument '1' to 'aclError aclrtMallocCached(void**, size_t, aclrtMemMallocPolicy)' AclInputs.inputs[i].data,sizeof(uint8_t)*inputsize,ACL_MEM_MALLOC_HUGE_FIRST);
这个错误是因为aclrtMallocCached函数的第一个参数是一个指向void*类型的指针,而你的代码中传递的是一个指向uint8_t*类型的指针,这样会导致类型不匹配,编译器无法编译通过。
解决这个问题,可以将aclrtMallocCached函数的第一个参数的类型改为void*类型的指针。
例如:
```c++
void* buffer;
aclError ret = aclrtMallocCached(&buffer, size, ACL_MEM_MALLOC_HUGE_FIRST);
```
或者使用reinterpret_cast进行类型转换:
```c++
uint8_t* buffer;
aclError ret = aclrtMallocCached(reinterpret_cast<void**>(&buffer), size, ACL_MEM_MALLOC_HUGE_FIRST);
```
这样就可以避免这个编译错误了。
阅读全文