c++ - 通过不同类型的指针删除缓冲区?

标签 c++ pointers memory-management

假设我有以下 C++:

char *p = new char[cb];
SOME_STRUCT *pSS = (SOME_STRUCT *) p;
delete pSS;

根据 C++ 标准,这安全吗?我是否需要转换回 char* 然后使用 delete[]?我知道它适用于大多数 C++ 编译器,因为它是普通数据,没有析构函数。能保证安全吗?

最佳答案

不能保证安全。这是 C++ FAQ lite 中的相关链接:

[16.13] 删除某些内置类型的数组(charint 等)时,我可以删除[]吗? ?

http://www.parashift.com/c++-faq-lite/freestore-mgmt.html#faq-16.13

关于c++ - 通过不同类型的指针删除缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70880/

相关文章:

c++ - if 语句不起作用并被跳到 else 部分

c++ - 如何在 libcurl 中使用成员函数指针

c++ - 是否可以将引用类型别名与指针运算符一起使用来声明对指针的引用?

ios - 尽管使用了(非原子,保留),为什么我必须保留属性?

android - 加载图像资源为 RGB 565

c++ - 为什么 C++ 中的析构函数以与初始化相反的顺序释放内存?

c++ - 对象构造函数的静态库 "Undefined Reference"

c++ - 将包含 int 和 float 的 4 个字节的数据转换为 float

c++ - 如果迭代器在 STL 容器中失效,指针是否失效

c - 将结构的指针成员分配给 null