结构体中含有string 会异常的原因和解决办法
2017-09-07 14:01
309 查看
#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变量
相关文章推荐
- ANR异常产生的原因及其解决办法
- JDBC 异常特殊原因 (数据库只读解决办法)
- Java链接Redis时出现 “ERR Client sent AUTH, but no password is set” 异常的原因及解决办法
- The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory的异常的原因及解决办法
- java.lang.IllegalStateException异常产生的原因及解决办法
- 文件路径正确,报java.io.FileNotFoundException异常的原因及解决办法
- 举例说明Android开发中遇到的 java.lang.ClassCastException: java.lang.String这个问题的原因及其解决办法
- php中出现Notice: Uninitialized string offset: 0原因及解决办法
- Struts2异常或错误不输出到控制台原因及解决办法
- Last packet sent to the server was 0 ms ago.异常的原因及解决办法
- HttpClient的CircularRedirectException异常原因及解决办法
- java.lang.IllegalStateException异常产生的原因及解决办法
- IE6,IE7,IE8下报JS错误:expected identifier, string or number的原因及解决办法
- For input string "1"异常的解决,以及原因。
- C# WPF VS2012 对类型“ ”的构造函数执行符合指定的绑定约束的调用时引发了异常 问题解决办法 产生什么原因
- Andorid5.0 bind service 异常和fail原因分析及解决办法
- java.lang.IllegalStateException异常产生的原因及解决办法
- org.springframework.beans.factory.BeanCreationException异常原因及解决办法
- Android NetworkOnMainThreadException异常原因及解决办法
- 解决mysql插入数据时出现Incorrect string value: '\xF0\x9F...' for column 'name' at row 1的异常 这个问题,原因是UTF-8编码有可