首页 > 解决方案 > 块范围内的 C++ 变量分段错误

问题描述

struct st{
    string name;
};

int main() {
    st s1[10];
    {
        st s2[10];
        for (int i = 0; i < 10; i++) {
            s2[i].name = "name";
        }
        memcpy(&s1, &s2, sizeof(s2));

    }
    for (int i = 0; i < 10; i++) {
        cout << s1[i].name << endl;
    }
    return 0;
}

上面的代码成功打印了十次“名称”,但是出现了段错误而不是终止。我怀疑它与 s2 的析构函数有关,但不确定。我应该如何处理?

标签: c++scope

解决方案


推荐阅读