有没有人曾经使用过C++的"贴牌新品"?如果是这样,那该怎么办?在我看来,它只对内存映射硬件有用.
在C++中,不允许在没有显式强制转换的情况下为任何整数指针分配void*指针.这需要使用static_cast.
但这是怎么回事:
int* iptr = new int;
Run Code Online (Sandbox Code Playgroud)
我知道新的运算符定义如下:
void* operator new(size_t);
Run Code Online (Sandbox Code Playgroud)
C++如何处理这个问题?我知道这是一个基本问题,但很重要.我也知道低级代码必须使用void.但这项任务如何合法?iptr是指向int的指针,new返回指向void的指针,它应该触发"错误:从'void*'到'int*'[-fpermissive]"无效转换的消息.
试图跟踪,但没有找到以下代码在VC++中给出"访问冲突"的原因,以及gcc中的分段错误.
#include <vector>
#include <iostream>
using namespace std;
typedef struct node
{
std::string data;
vector <struct node*> child;
}NODE, *PNODE;
int main()
{
PNODE head;
head = (PNODE) malloc(sizeof(NODE));
head->data.assign("hi");
printf("data %s", head->data.c_str());
getchar();
}
Run Code Online (Sandbox Code Playgroud)