int*p=new char[5]是正确的吗
时间: 2024-02-09 16:09:07 浏览: 86
C++中malloc与free、new与delete的详解与应用
这段代码是合法的,但是并不是正确的。这是因为 p 是一个 int 类型的指针,而 new char[5] 分配的是 5 个 char 类型的内存空间。当我们将这个 char 类型的指针赋值给 int 类型的指针 p 时,会发生指针类型不匹配的问题,这会导致程序出现未定义的行为。
正确的做法是,将 p 声明为 char 类型的指针,或者将 new 操作符后面的类型改为 int 类型,例如:
```
char* p = new char[5]; // 将 p 声明为 char 类型的指针
int* p = new int[5]; // 将 new 操作符后面的类型改为 int 类型
```
这样,就可以避免指针类型不匹配的问题。
阅读全文