zoukankan      html  css  js  c++  java
  • memset 导致的段错误(segmentation fault)

    在调试Minixml库时,定义了一个结构体:

    struct ssid_info_s{

    std::string wl_ssid_name;
    std::string wl_ssid_mac;
    std::string wl_wpa_psk;
    bool wl_bss_enabled;
    unsigned int wl_sta_num;
    unsigned int wl_maxassoc;
    bool wl_hide;
    bool wl_radio;
    bool wl_isolate;
    unsigned int wl_pwr_percent;
    unsigned int wl_bw;
    unsigned int wl_band;
    unsigned int wl_nmode;
    unsigned int wl_auth_mode;
    unsigned int wl_channel;
    };

    做类似以下操作:

    void fun(){

    struct ssid_info_s ssid_info;

    memset(&ssid_info, 0, sizeof(structs sid_info_s));

    printf("111111 ");}

    没有立即引起段错误(后面的printf仍然有输出),反而在函数返回的时候出发了段错误。

    这里涉及到sizeof(std::string )的问题,依赖于标准库的在不同平台的实现,而这个求出来的大小不是我们期望的string对象的字符长度,所以导致memset引发段错误。

  • 相关阅读:
    Android启动过程介绍
    第九届蓝桥杯Java B组
    二分模板和区别
    第十届蓝桥杯Java B组
    2019 ICPC Asia Nanjing Regional(现场赛)
    PAT 甲级 1057 Stack
    P1972 [SDOI2009]HH的项链
    Python中的字典排序
    Comet OJ
    ekmp模板
  • 原文地址:https://www.cnblogs.com/programmer-wfq/p/5853851.html
Copyright © 2011-2022 走看看