在结构体中定义字符串的成员的时候要注意
定义成string有时候,在某些程序中给成员赋值会崩溃,但是不确定到底什么情况会崩溃。
运行报错如下:

Program received signal SIGSEGV, Segmentation fault.
0xb665489c in std::string::assign(char const*, unsigned int) ()
from /usr/lib/arm-linux-gnueabihf/libstdc++.so.
typedef struct
{
string name; // 不要这样,有时候会崩溃
char name2[]; // 可以这样
char* pname; // 可以这样
int age;
}Student;

所以最好使用字符数组,或者通过指针使用动态内存。

结构体中string成员的问题的更多相关文章

  1. C语言 结构体中的成员域偏移量

    //C语言中结构体中的成员域偏移量 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> # ...

  2. 在C语言结构体中添加成员函数

    我们在使用C语言的结构体时,经常都是只定义几个成员变量,而学过面向对象的人应该知道,我们定义类时,不只是定义了成员变量,还定义了成员方法,而类的结构和结构体非常的相似,所以,为什么不想想如何在C语言结 ...

  3. C/C++中指向结构体变量的指针,调用指向的那个结构体中的成员

    设p是指向结构体变量的指针,则可以通过以下的方式,调用指向的那个结构体中的成员: (1)结构体变量.成员名.如,stu.num. (2)(*p).成员名.如,(*p).num. (3)p->成员 ...

  4. C++,关于类和结构体中,成员访问属性(public,private)

    今天发现一个的问题: #include <vector> #include <iostream> #include <algorithm> #include < ...

  5. 使用union来遍历结构体中的成员

    前几天和实验室的同学讨论问题的时候发现他使用的一段数据校验的代码自己以前没有接触过,今天有空就把它整理了一下. #include <stdio.h> #include <stdlib ...

  6. 深入理解指针—>结构体里的成员数组和指针

    单看这文章的标题,你可能会觉得好像没什么意思.你先别下这个结论,相信这篇文章会对你理解C语言有帮助.这篇文章产生的背景是在微博上,看到@Laruence同学出了一个关于C语言的题,微博链接.微博截图如 ...

  7. 读陈浩的《C语言结构体里的成员数组和指针》总结,零长度数组

    原文链接:C语言结构体里的成员数组和指针 复制例如以下: 单看这文章的标题,你可能会认为好像没什么意思.你先别下这个结论,相信这篇文章会对你理解C语言有帮助.这篇文章产生的背景是在微博上,看到@Lar ...

  8. SCROLLINFO结构体中fMask和nPage的理解

    还是VC++中有关显示图像的问题. 我们在显示一幅比较大的图像时,要使用带标准滚动条的对话框.涉及对滚动条的操作就不得不提SCROLLINFO这个结构体.只看单词意思就这道这个结构体要储存滚动条的一些 ...

  9. C++结构体中sizeof

    说明: 结构体的sizeof值,并不是简单的将其中各元素所占字节相加,而是要考虑到存储空间的字节对齐问题.这些问题在平时编程的时候也确实不怎么用到,但在一些笔试面试题目中出是常常出现,一.解释 现代计 ...

随机推荐

  1. C++进阶--理解左值和右值

    /* * 理解左值和右值 * * * 为什么要关心这个? * 1. 有助于理解C++结构,搞明白编译器的错误和警告 * 2. C++ 11中引入了右值引用,理解左值右值是前提 * */ /* * 简单 ...

  2. Tomcat中Url中文乱码解决办法

    引自:http://thoughtfly.iteye.com/blog/1533481 默认的tomcat容器如果直接使用get方式在url中传中文时,传到后台接收会是乱码. 乱码问题 原因: tom ...

  3. 关于socket阻塞与非阻塞情况下的recv、send、read、write返回值---部分内容可能不确切,待讨论

    1.阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 <0:出错,=0:连接关闭,>0接收到数据大小,特别:返回值  ...

  4. 有趣的background

    前言 background是css的简写形式,可以一次性定义各种背景属性,包括color.image.origin.size,repeat方式等等. background在活动项目中用的还是比较多的, ...

  5. SkipList理解

    记下自己对跳表SkipList的理解. SkipList采用空间换时间的思想,通过增加数据间的链接,达到加快查找速度的目的. 数据库LevelDB和RocksDB中用到了SkipList,Redis中 ...

  6. lamda匿名函数(与sorted(),filter(),map() 一起用), 递归函数, 二分查找

    一. 匿名函数 为了解决一些简单的需求而设计的一句话函数.  lambda表示的是匿名函数. 不需要用def来声明, 一句话就可以声明出一个函数 语法:    函数名 = lambda 参数: 返回值 ...

  7. CVE-2017-8570漏洞利用

    CVE-2017-8570漏洞是一个逻辑漏洞,利用方法简单,影响范围广.由于该漏洞和三年前的SandWorm(沙虫)漏洞非常类似,因此我们称之为“沙虫”二代漏洞. 编号 CVE-2017-8570 影 ...

  8. 安装MySQL_Python时出现is not a supported wheel on this platform.

    MySQL-Python 数据库驱动安装 pip install mysql_python失败 不支持windows操作系统 解决: 自行下载安装 下载网站 http://www.lfd.uci.ed ...

  9. Redis 穿透和雪崩

    Redis穿透 出现原因:频繁的查询一个不存在的数据,由于缓存不命中,每次都要查询持久层,从而失去缓存保护后端的意义 解决方法: 部署过滤器拦截: 将数据库中数据的存在的Id存入列表,放入缓存中,每次 ...

  10. DB通用类:Sqlite通用类库

    Sqlite通用类库 using System; using System.Collections; using System.Collections.Generic; using System.IO ...