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

2016-02-19 18:37 6 1 收藏

下面图老师小编跟大家分享C++中动态内存分配引发问题的解决方案,一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~

【 tulaoshi.com - 编程语言 】

假设我们要开发一个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]='

来源:http://www.tulaoshi.com/n/20160219/1618368.html

延伸阅读
本文首先提出了处理VC++中结构体时应注意的一个问题,然后详细分析了存在该问题的原因,最后做实战训练。       注意:      (1)在VC下,下面各类型占字节数为:char-unsigned int -1; short int -2; int -unsigned int -4;  long -float-4;   double -long double -8  ...
标签: Web开发
PHP中路径问题的解决方案引言: 关于PERL与PHP中的包含路径一直是一个比较难解的问题,主要是与操作系统和WEB服务器有关,不可能非常智能化的解决这个路径问题。相对于PERL,PHP的路径好得多,解决起来也容易得多,因为PHP的相对路径在PHP程序中的任何场合都可以使用,而不象PERL在某些语句中必须用绝对路径而导致移植的极其复杂。 基于此...
标签: Java JAVA基础
  这两天在win98下装apache1.3.9加jserv和gnujsp1.0,jdk1.2.2,jsdk2.0   发现中文无法正常显示。要么乱码,要么出错。   经网友提醒,总结了以下几条方法。   1:修改区域设置:在控制面版中选择区域设置,设为英语(美国)?nbsp;     然后重起。一切就都正常。   2:在j...
根据sgi 的STL源码的二级分配算法改写的内存池分配程序,只要稍微修改就可以实现共享内存方式治理,使用C++标准库容器中的map,set,multimap,multiset测试通过,vector测试通不过,原因是在内存回收的时候考虑的比较简单,vector每次分配内存个数不固定,回收也不固定,这样的话,程序还需要继续完善。 内存池治理程序源码如下:?XML:name...
标签: Web开发
1. 错误提示 Warning: Cannot send session cookie - headers already sent Warning: Cannot send session cache limiter - headers already sent 分析及解决办法 这一类问题,的原因是你在程序中使用session_start()时,之前已经有实际的html内容输出了。或许你说,我没有啊,我只不过是echo或print一条消息了。很抱歉,你的echo或print...

经验教程

528

收藏

20
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部