结构体中存在string类型成员

原创 2015年12月21日 17:34:04
  • 标签:
  • 结构体 /
  • string类型成员 /
  • 构造函数
  • 2593
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
typedef struct node{
string str;
}NODE;
int main(){
string var = "lirao";
NODE * node = (NODE *)malloc (sizeof(NODE));
node->str = var;
}
对于这个程序,在程序调试过程中,在程序的最后一行是无论如何都过不了的。出现的错误就是内存访问冲突。但是如果我们把malloc分配的内存改为new分配,NODE*node = new NODE(),问题立马就解决了,这是为什么呢?
只是因为在NODE 结构中包含了string类型成员,用malloc分配时,由于malloc没有这样的机制,导致无法调用string的构造函数,所以无法构建起string对象,给一个不存在的对象赋值肯定错误。但是new分配内存时有这样的机制,调用了string的构造函数,所以就构建起了对象,内存访问冲突就不会发生了。

结构体中string类型成员相关推荐

  1. 结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法

    结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势:(1).不需要初始化,数组名直接就是所在的偏移:(2).不占任何空间,指针需要占 ...

  2. C/C++ 学习笔记:结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法

    结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势:(1).不需要初始化,数组名直接就是所在的偏移:(2).不占任何空间,指针需要占 ...

  3. c++ 结构体中不同类型的初始值_Golang语言基础教程:结构体

    1.1 什么是结构体 Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型.结构体是由一系列具有相同类型或不同类型的数据构成的数据集合. 1.2 结构体的定义和初始化 ...

  4. C语言边角料:结构体中指针类型的成员变量,它的类型重要吗?

    一.前言 昨天在编译代码的时候,之前一直OK的一个地方,却突然出现了好几个 Warning! 本着强迫症要消灭一切警告的做法,最终定位到:是结构体内部, 指向结构体类型的指针成员变量导致的问题. 这个 ...

  5. c结构体中定义的成员指针赋值与结构体指针作为成员函数参数的使用

    c语言定义结构体可以直接声明结构体变量的,如下 struct Student{char *name; int age; }xiaoming 这样以来,我们就定义了一个结构体类型,同时声明了一个结构体变 ...

  6. c++ 结构体中不同类型的初始值_不同类型结构的厂房效果图大盘点

    ​随着工业的迅猛发展,工业厂房的分类也在不断地明细化.现在,厂房的分类可以根据不同的标准划分多种类别的厂房,比如可以分为单层厂房和多层厂房,也可以分为标准厂房与非标准厂房,也可以分为轻钢厂房与重钢厂房 ...

  7. c语言的结构体能存放函数吗,在C语言结构体中添加成员函数

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

  8. 1---结构体中最后一个成员为[0]长度数组的用法

     结构体中最后一个成员为[0]长度数组的用法 2012-04-27 16:03:58 分类: C/C++ 这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势:  1.不需要初始 ...

  9. 算法训练 - P1101 ——有一份提货单,其数据项目有:商品名(MC)、单价(DJ)、数量(SL)。定义一个结构体prut,其成员是上面的三项数据。在主函数中定义一个prut类型的结构体数组,输入每

    问题描述 有一份提货单,其数据项目有:商品名(MC).单价(DJ).数量(SL).定义一个结构体prut,其成员是上面的三项数据.在主函数中定义一个prut类型的结构体数组,输入每个元素的值,计算并输 ...

最新文章

  1. h5新增的属性php,HTML5中form的新增属性或元素
  2. 充电电池科研大突破:可使用十多年且储存容量几乎不发生退化
  3. 哪些名人在学python_盘点计算机界十位顶级人物,看看你认识几个?
  4. Python数据分析之pandas入门
  5. linux的创建线程池,Linux下通用线程池的创建与使用(上) (3)
  6. nginx authorization 丢失_婚礼影像丢失 损失如何弥补?_政务_澎湃新闻
  7. python在规划类专业的作用_城乡规划学Python、Gis有哪些具体的作用?
  8. docker中安装Nexus3
  9. 基于ssm的酒店客房管理系统(含数据库结构文档)
  10. 关于 Bandizip 每次解压都催你更新
  11. C++学生管理系统课程设计
  12. 深信服C++ 一面(技术面、70min、offer)
  13. thymeleaf模板引擎: org.xml.sax.SAXParseException: 在实体引用中, 实体名称必须紧跟在 '' 后面。
  14. 【航天远景 MapMatrix 精品教程】04 Metashape空三导入MapMatrix
  15. [报错] TypeError: run() argument after * must be an iterable, not int
  16. Python Basic - readlines()方法
  17. [转贴]Symbian开发入门 - UIQ开发教程
  18. scrapy_splash基本使用
  19. 一个电压跟随器的小故事
  20. (三)Druid数据库连接池如何回收线程源码分析和高级参数优化

热门文章

  1. 构建本地缓存java_Java8简单的本地缓存实现
  2. 注解开发不方便_注解(上)
  3. linux 脚本案例,30个关于Shell脚本的经典案例(上)
  4. python判断网页密码加密方式_python实现网页登录时的rsa加密流程
  5. android界面怎么优化字符串,android应用性能优化
  6. iphone和android,iPhone 和 Android 产品经理有哪些异同?
  7. python merge很费内存吗,python如何使用merge实现堆
  8. Mysql 参数最佳实践_MySQL参数调优最佳实践
  9. 在Java 17中偏向锁可算是废了
  10. 每日一皮:有人质疑新疫苗的免疫率低?