[c++ 温故知新]类内char* 指针内存分配长度
2015-12-13 13:22
375 查看
已开始接触开发工作时,面对类内char* 指针,有时候在对其赋值时,面对内存分配长度往往不知所措,如字符串长度1024,
我们实际分配内存的时候,需要分配1024+1的内存,最后一位用于赋值‘’\0‘,如果不这么做的话,就会下面这样:
我们实际分配内存的时候,需要分配1024+1的内存,最后一位用于赋值‘’\0‘,如果不这么做的话,就会下面这样:
#include <iostream> using namespace std; class test { public: test(const char*); ~test(){} char* m_pstr; }; test::test(const char* str):m_pstr(NULL) { int len=strlen(str); //m_pstr=new char[len+1]; //memset(m_pstr,0,len+1); m_pstr=new char[len]; memset(m_pstr,0,len); memcpy(m_pstr,str,len); } int main() { char* s="hello world"; test t=s; cout<<t.m_pstr<<endl; }上面的代码输出结果会乱码,因为c++输出字符串时,只要没有读取到‘\0’就会一直进行下去,因此把char* 内存分配为适当的长度(len+1),并在最后赋值‘\0‘,就可以了
相关文章推荐
- 【ThinkingInC++】2、输入和输出流
- 编C语言单元测试框架CUnit方法库
- C++的string二三事
- 实战c++中的string系列--string与char*、const char *的转换(data() or c_str())
- 实战c++中的string系列--string与char*、const char *的转换(data() or c_str())
- C++ Map容器实例
- c++函数
- c++中设计可以统计自身对象的类(1)
- VS提示C++某些头文件或函数已经过期无法使用
- c语言学习笔记之static和extern关键字
- 面试总结6--C++基础问题Part2
- vc++中几个常用的数学函数
- c语言学习笔记之文件包含
- c语言学习笔记之条件编译
- c语言学习笔记之宏定义
- 书写新CPP的好习惯(VC&gcc)
- 书写新CPP的好习惯(VC&gcc)
- printf函数的使用
- C++学习笔记-const对象,类型别名,auto和decltype
- c++实现简单的输入输出