C++ 在c+;中的向量类上推回元素时出现分段错误+;

C++ 在c+;中的向量类上推回元素时出现分段错误+;,c++,C++,我的机器出现了段故障。我是C++新手。这个问题使我困惑了好几个小时。我不知道为什么。请帮帮我。 提前感谢。您的取消链接逻辑已中断: vecArr.push_back(hp3); 如果-*count为真,即不等于0,则删除该选项。因此,适当的条件应该是: if (--*count) { delete str_ptr; delete count; } 此外,您不应复制该代码,而应将其移动到方法并从dtor和赋值运算符调用。您的取消链接逻辑已断

我的机器出现了段故障。我是C++新手。这个问题使我困惑了好几个小时。我不知道为什么。请帮帮我。
提前感谢。

您的取消链接逻辑已中断:

   vecArr.push_back(hp3);
如果
-*count
为真,即不等于0,则删除该选项。因此,适当的条件应该是:

    if (--*count) {
        delete str_ptr;
        delete count;
    }

此外,您不应复制该代码,而应将其移动到方法并从dtor和赋值运算符调用。

您的取消链接逻辑已断开:

   vecArr.push_back(hp3);
如果
-*count
为真,即不等于0,则删除该选项。因此,适当的条件应该是:

    if (--*count) {
        delete str_ptr;
        delete count;
    }

另外,您不应该复制该代码,而应该将其移动到方法,并从dtor和赋值运算符调用。

我发现两个问题。首先,解除分配周围的防护被否定。如前所述,这将在每次发生复制时释放共享空间。将
if(--*count)
行更改为
if(--*count==0)
以解决此问题


第二个是赋值运算符不返回*this。使用返回值时,链式赋值操作(例如,
a=b=c
)将无法按预期工作。

我发现两个问题。首先,解除分配周围的防护被否定。如前所述,这将在每次发生复制时释放共享空间。将
if(--*count)
行更改为
if(--*count==0)
以解决此问题


第二个是赋值运算符不返回*this。使用返回值时,链式赋值操作(例如,
a=b=c
)将无法按预期工作。

您是否尝试过在调试器中运行程序?希望它能准确地告诉您是哪一行导致segfault.thx,以便您提出建议。您是否尝试过在调试器中运行程序?希望它能准确地告诉您是哪一行导致segfault.thx,以便您提出建议。我已接受您的建议,提取相同的代码部分。@chbchb55它是实际的运算符,您可以使用either@chbchb55你又错了:)这里有“与C的兼容性”一节在该页上-它与标题一起工作。我已接受您的建议,提取相同的代码部分。@chbchb55它是实际的运算符,您可以使用either@chbchb55你又错了:)那页上有“与C的兼容性”一节-它使用一个标题