C++中动态内存分配引发问题的解决方案

肖凤达

肖凤达

2016-02-19 18:37

下面图老师小编跟大家分享C++中动态内存分配引发问题的解决方案,一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~
假设我们要开发一个String类,它可以方便地处理字符串数据。我们可以在类中声明一个数组,考虑到有时候字符串极长,我们可以把数组大小设为200,但一般的情况下又不需要这么多的空间,这样是浪费了内存。对了,我们可以使用new操作符,这样是十分灵活的,但在类中就会出现许多意想不到的问题,本文就是针对这一现象而写的。现在,我们先来开发一个Wrong类,从名称上看出,它是一个不完善的类。的确,我们要刻意地使它出现各种各样的问题,这样才好对症下药。好了,我们开始吧!
  
  Wrong.h:
  
  #ifndef WRONG_H_
  #define WRONG_H_
  class Wrong
  {
  private:
  char * str; //存储数据
  int len; //字符串长度
  
  public:
  Wrong(const char * s); //构造函数
  Wrong(); // 默认构造函数
  ~Wrong(); // 析构函数
  friend ostream & operator<<(ostream & os,const Wrong& st);
  };
  #endif
  
  Wrong.cpp:
  
  #include <iostream>
  #include <cstring>
  #include "wrong.h"
  using namespace std;
  Wrong::Wrong(const char * s)
  {
  len = strlen(s);
  str = new char[len + 1];
  strcpy(str, s);
  
  }//拷贝数据
  
  Wrong::Wrong()
  {
  len =0;
  str = new char[len+1];
  str[0]='
展开更多 50%)
分享

猜你喜欢

C++中动态内存分配引发问题的解决方案

编程语言 网络编程
C++中动态内存分配引发问题的解决方案

论C/C++函数间动态内存的传递

编程语言 网络编程
论C/C++函数间动态内存的传递

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

链表的C语言实现之动态内存分配

编程语言 网络编程
链表的C语言实现之动态内存分配

控制C++的内存分配

编程语言 网络编程
控制C++的内存分配

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

内存常见问题解决方案汇总

电脑入门
内存常见问题解决方案汇总

C++中的内存划分

编程语言 网络编程
C++中的内存划分

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

XML教程(4)---皇家的术士(初涉XSL)

XML教程(4)---皇家的术士(初涉XSL)

使用.NET存储XML数据

使用.NET存储XML数据
下拉加载更多内容 ↓