c++.char ** a;a = (char**)malloc(sizeof(char**));
时间: 2023-09-09 09:13:26 浏览: 136
你创建了一个指向指针的指针 `a`,并使用 `malloc` 函数为其分配了内存空间。根据你的代码,你分配了 `sizeof(char**)` 字节的内存空间,但是通常情况下应该使用 `sizeof(char*)` 来分配指针所占的内存空间。另外,你也可以使用 `calloc` 函数来分配内存并初始化为零。
正确的写法应该是:
```c
char **a;
a = (char**)malloc(sizeof(char*));
```
或者使用 `calloc` 函数:
```c
char **a;
a = (char**)calloc(1, sizeof(char*));
```
记得在使用完 `a` 后,要调用 `free(a)` 来释放之前分配的内存空间,以避免内存泄漏。
相关问题
C++实现char**转char*代码
以下是 C 语言实现 char** 转 char* 的代码:
```c
char* combineStrings(char** strings, int numStrings) {
char* combined = malloc(sizeof(char) * 100); // 假设每个字符串不超过 100 个字符
int i, j, index = 0;
for (i = 0; i < numStrings; i++) {
j = 0;
while (strings[i][j] != '\0') {
combined[index++] = strings[i][j++];
}
}
combined[index] = '\0';
return combined;
}
```
这个函数接受一个 char** 和一个整数,char** 存储一组字符串,整数表示字符串的数量。函数将这组字符串连接成一个字符串,返回新的 char*。注意,这个函数假设每个字符串不超过 100 个字符,需要根据实际情况调整分配内存的大小。
char* buffer=malloc(sizeof(long))报错invalid conversion from'void*'to'char*'
这个错误是因为`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; // 释放内存
```
阅读全文