C++整理动态内存管理

在C++程序中,内存需求都是在编写程序的时候声明变量来确定,但是程序在运行过程中需要动态分配内存。

为此C ++将运算符new和delete合成在一起。

说明:通过new关键字向系统内存申请。

C++中的动态内存分配是基于数据类型进行的。

delete关键字用于内存释放。

datetype *pointer = new datatype;
 .
 .
 .
delete pointer

datatype可以是C语言的基本数据类型,也可以是结构体,还可以是类。

pointer是一个指针,指向new返回的地址。

举例:

{
 int *ip=new int //动态分配一个整数大小的内存

  (*ip)=10;
  detle ip;
}

或者:

Cbookname *ip=new bookname;   //动态分配bookname类

    strcpy(ip->name,"思考快与慢");

    ip.hd=18;

    detle ip;

如果new出来的是类,相当于创建对象,所以会调用构造函数,delete的时候也会调用析构函数。

实际测试:

#include"/root/public.h"
int main()
{

    char *ip=new char [100];
    memset(ip,0,100);

    strcpy(ip,"思考快与慢");
    printf("=%s=\n",ip);
}
=思考快与慢=

测试: 

#include"/root/public.h"
class Cbookname
{
  public:
  char *ip;
  int m_hd;
  char m_name[100];
  void malloc_(int size)
  {
  if(ip!=0){delete ip; ip=0;
   }

   ip=new char [size];
  }

  void free_()
  {
   if(ip!=0){delete ip;  ip=0; }
  }
  Cbookname()
{
  ip=0;
  m_hd=0;
  memset(m_name,0,sizeof(m_name));
  printf("这里是构造函数");
};
   ~Cbookname()
   {
     free_();
    printf("这里是析构函数");
   }
};
int main()

{
    Cbookname bookname;
    bookname.malloc_(200);
    strcpy(bookname.ip,"思考快与慢");
   printf("%s\n",bookname.ip);
}
这里是构造函数思考快与慢
这里是析构函数

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值