Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Seg故障执行新向量<;字符串>;_C++_Segmentation Fault - Fatal编程技术网

C++ Seg故障执行新向量<;字符串>;

C++ Seg故障执行新向量<;字符串>;,c++,segmentation-fault,C++,Segmentation Fault,以下代码在最后一行获得seg故障: HookAct *act = new HookAct; act->hkAct = HookAct::PRINT; act->params = new vector<string>; 有人知道它为什么这样做吗 仅供参考,以下是HookAct的[当前、临时]定义: struct HookAct { enum { PRINT } hkAct; vector<string&g

以下代码在最后一行获得seg故障:

   HookAct *act = new HookAct;
    act->hkAct = HookAct::PRINT;
    act->params = new vector<string>;
有人知道它为什么这样做吗

仅供参考,以下是HookAct的[当前、临时]定义:

struct HookAct {
    enum {
        PRINT
    } hkAct;
    vector<string> *params;
};
struct-HookAct{
枚举{
印刷品
}香港法例;
向量*参数;
};

您粘贴的代码很好


我认为您的问题可能是将
NULL
字符串添加到向量
act->params

粘贴的代码没有问题

我认为您的问题可能是将
NULL
字符串添加到向量
act->params

中,因为错误消息指向
str::string
被初始化为
NULL
,这是禁止的。但是,您的代码看起来像是由来自Java或C#的人编写的,并且习惯于无意识地
new
一切。但是,在C++中,自动存储是首选的。p> 如果您将代码更改为此

struct HookAct {
    enum {
        PRINT
    } hkAct;
    vector<string> params;
    HookAct() : hAct(HookAct::PRINT), params() {}
};
如图所示,错误消息指向使用
NULL
初始化的
str::string
,这是禁止的。但是,您的代码看起来像是由来自Java或C#的人编写的,并且习惯于无意识地
new
一切。但是,在C++中,自动存储是首选的。p> 如果您将代码更改为此

struct HookAct {
    enum {
        PRINT
    } hkAct;
    vector<string> params;
    HookAct() : hAct(HookAct::PRINT), params() {}
};

你发布的代码块没有问题。错误的原因可能是代码中的其他地方。无法使用给定的代码进行复制。是的,问题似乎是您实际为act->params赋值的位置。你周围没有像
act->params=“sometstring”
这样的东西吗?我同意卡萨布兰卡的观点;当STL或标准库函数发生故障时,可能是由于缓冲区溢出或早期代码中的某些内容造成的。您发布的代码块没有问题。错误的原因可能是代码中的其他地方。无法使用给定的代码进行复制。是的,问题似乎是您实际为act->params赋值的位置。你周围没有像
act->params=“sometstring”
这样的东西吗?我同意卡萨布兰卡的观点;当STL或标准库函数发生故障时,可能是由于缓冲区溢出或早期代码中的某些内容造成的。
HookAct hookAct;