网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

memsettostruct引起的core

#include
using namespace std;

struct A
{
    int a;
    int b;
};

struct B
{
    int a;
    char aa[10];
    char ab[30];
    int b;
    char ni[40];
    string cs; 
};

int main()
{
    /*A mya;

    mya.a=3;
    mya.b=4;
    void * pa =(void*)&mya;

    B* pb=(B*)pa;*/

    B ba; 
    memset(&ba,0,sizeof(B));
    /*cout<a<b<aa<ni<cs;
}

西湖网站建设公司创新互联公司,西湖网站设计制作,有大型网站制作公司丰富经验。已为西湖成百上千提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的西湖做网站的公司定做!

产生的 core 文件

gdb a core.***

bt 

(gdb) bt
#0  0x00007ff0978960d7 in __exchange_and_add (this=0xffffffffffffffe8, __a=...)
    at /data/home/root/source/build_gcc4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/ext/atomicity.h:48
#1  __exchange_and_add_dispatch (this=0xffffffffffffffe8, __a=...)
    at /data/home/root/source/build_gcc4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/ext/atomicity.h:81
#2  std::basic_string, std::allocator >::_Rep::_M_dispose (this=0xffffffffffffffe8, __a=...)
    at /data/home/root/source/build_gcc4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/basic_string.h:242
#3  0x00007ff097896130 in std::basic_string, std::allocator >::~basic_string (this=Unhandled dwarf expression opcode 0xf3
)
    at /data/home/root/source/build_gcc4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/basic_string.h:535
#4  0x0000000000400c00 in B::~B (this=0x7fff35938f40, __in_chrg=) at test_struct.cpp:13
#5  0x0000000000400b63 in main () at test_struct.cpp:39

原因:

因为,memset(&,0,sizeof()) 会把 struct 结构体内的 所有复位 为0,内含的 string 对象 被毁坏了,在析构时 string对象的析构调用问题,

对应 struct 内含 对象 最好不要用 memset 这类函数


当前题目:memsettostruct引起的core
文章转载:http://bjjierui.cn/article/gpsegs.html

其他资讯