相关疑难解决方法(0)

"放置新"有什么用途?

有没有人曾经使用过C++的"贴牌新品"?如果是这样,那该怎么办?在我看来,它只对内存映射硬件有用.

c++ memory-management placement-new new-operator

385
推荐指数
18
解决办法
16万
查看次数

为什么允许new运算符返回*void到每个指针类型?

在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]"无效转换的消息.

c++

9
推荐指数
1
解决办法
3128
查看次数

分段故障

试图跟踪,但没有找到以下代码在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)

c++ stl segmentation-fault

0
推荐指数
2
解决办法
286
查看次数