当前位置: 首页 > news >正文

广东建设安全质量协会网站网站多国语言设计

广东建设安全质量协会网站,网站多国语言设计,学网站开发应该学什么软件,建设wap手机网站今天在公司的时候#xff0c;排查一个问题#xff0c;创建l3 lif 失败#xff0c;查看各种日志发现是用key去创建的 lif失败了#xff0c;日志里指示key为空#xff0c;导致的创建失败。原因为一个结构体比基线的多了一些东西#xff0c;导致版本不对#xff0c;既而计算…        今天在公司的时候排查一个问题创建l3 lif 失败查看各种日志发现是用key去创建的 lif失败了日志里指示key为空导致的创建失败。原因为一个结构体比基线的多了一些东西导致版本不对既而计算出来的key不对。调试过程中用到了 ptype 打印结构体变量的类型结果看基线分支代码却对应不上比基线代码的结构体多了一个 union 变量。以下只作一下练习 #include map #include string #include stdlib.h #include stdio.henum {TYPE_ID_0,TYPE_ID_1,TYPE_ID_2,TYPE_ID_3,TYPE_ID_4,TYPE_ID_5,TYPE_ID_6,TYPE_ID_MAX }; typedef struct mapData {int id;char *p;std::string key; }MapData;std::mapstd::string, MapData g_mapData[TYPE_ID_MAX];int changeMap(int type); int main() {changeMap(2);for(int i 0 ; i TYPE_ID_MAX; i){auto data g_mapData[i];//for(auto it : data)for(auto ite data.begin(); ite ! data.end(); ite){//printf(i %d, string: %s, id %d, key %s\n, i, it.first.c_str(), it.second.id, it.second.key.c_str());printf(i %d, string: %s, id %d, key %s\n, i, ite-first.c_str(), ite-second.id, ite-second.key.c_str());}}return 0; }int changeMap(int type) {int a 100;auto data g_mapData[type];char test[] test;MapData newData {20, test, 2000};data[1] newData;data.insert(std::pairstd::string, MapData(2, newData));return 0; } 用GDB调试打一个断点 我们可以看到如果是结构体类型则会打印出来结构体的成员如果是map类型会打印出什么呢 如果要改变变量的值可以使用命令 set variable xxxx如 如果是结构体类型该怎么赋值呢先看一下最简单的结构里就一个基本的类型 #include map #include string #include stdlib.h #include stdio.henum {TYPE_ID_0,TYPE_ID_1,TYPE_ID_2,TYPE_ID_3,TYPE_ID_4,TYPE_ID_5,TYPE_ID_6,TYPE_ID_MAX }; typedef struct mapData {int id; }MapData;std::mapstd::string, MapData g_mapData[TYPE_ID_MAX];int changeMap(int type); int main() {changeMap(2);for(int i 0 ; i TYPE_ID_MAX; i){auto data g_mapData[i];//for(auto it : data)for(auto ite data.begin(); ite ! data.end(); ite){//printf(i %d, string: %s, id %d, key %s\n, i, it.first.c_str(), it.second.id, it.second.key.c_str());//printf(i %d, string: %s, id %d, key %s\n, i, ite-first.c_str(), ite-second.id, ite-second.key.c_str());}}return 0; }int changeMap(int type) {int a 100;auto data g_mapData[type];char test[] test;MapData newData {20};data[1] newData;data.insert(std::pairstd::string, MapData(2, newData));return 0; } 打个断点查看一下结构体的值然后再修改一下看结果 如果是复杂的结构体呢如 typedef struct mapData {int id;char *p;std::string key; }MapData; 结构体里有指针有std::string 类型这时候该怎么赋值呢 结果有点不一样即使第二个成员是指针我们临时给它赋了一个值也是正常的但std::string却显示为空为何我们看一下std::string 的源码 string 保存的是一个指针指针指向的才是真正的数据那我们可以看一下这个指针指向的地址是不是保存着我们给它赋的值 “aaa” 首先打印出key的地址再根据它的地址看内存里保存了哪些值其中 0x00607060 就是std::string 私有成员 _M_dataplus的值因为它是一个指针指向的是string 的内容。但为何在GDB里直接打印结构体却显示为空呢有知道的大神指点一下。
http://www.tj-hxxt.cn/news/233686.html

相关文章:

  • 长春做网站价格iis怎么创建网站
  • 那个网站做代买腾讯企点聊天记录迁移
  • 视频网站如何做盗链企业管理
  • 北京外贸网站建设公司哪一家好
  • 建网站公建网站公司广州微网站建设服务
  • 什么做网站舞台灯光网站建设
  • 网站建设十胜石怎么用dw网站怎么建设
  • 该网站正在紧急升级维护中珠海个人建站模板
  • 厦门网站建设价格xm37搜房网站建设分析
  • 提升网站响应时间如何建立收费网站
  • 济源制作网站自由人网站开发
  • 对于网站建设的描述网站后台扫描插件
  • 东莞市建设网站网页即时聊天
  • 做网站需要的带宽上行还是下行网站开发样板
  • wordpress 建站五分钟国际知名设计公司有哪些
  • 安徽长江建设集团有限公司网站视频制作价格明细
  • 个人网站有什么用php网站数据库怎么上传
  • 网站设计师的工作内容美食网站案例
  • 网站建设基本费用慈溪哪里有做网站
  • 网站建设毕业答辩ppt模板下载如何搭建网络论坛平台
  • 内蒙古电子商务网站做行业网站投入
  • 网做 网站有哪些辽宁省工程招投标信息网
  • 四川建设厅官方网站证书查询泰州市网站建设制作
  • 政务公开网站建设管理网站建设带后台
  • 营口 微网站建设wordpress怎么查看域名绑定
  • 广州网站建设 易点宠物医院网站开发
  • wordpress 下载站主题建设银行网上流览网站
  • 网站子目录绑定二级域名网页设计个人
  • 17网站一起做网店打不开做那种网站
  • 如何统计网站pv买了个网站后怎么做的