用new和delete运算符进行动态分配和撤销存储空间

测试描述:临时开辟一个存储空间以存放一个结构体数据

#include <iostream>
#include <string>
using namespace std;
struct Student
{
    string name;
    int age;
    char sex;
};
int main()
{
    Student *p;  //定义指向结构体类型Student的数据的指针变量p
    p=new Student;  //用new运算符开辟一个存放Student型数据的空间,把地址赋给p
    p->name="jrz1900";
    p->age=20;
    p->sex='M';
    cout<<p->name<<endl<<p->age<<endl<<p->sex<<endl;
    delete p;
    return 0;
}

结果显示:

new运算符使用的一般格式为:

new  类型 [初值]

注意:用new运算符分配数组空间时不能指定初值。如果由于内存不足等原因而无法正常分配空间,则new会返回一个空指针NULL,用户可以根据指针的值判断分配空间是否成功。

delete 运算符使用的一般格式为:

delete  指针变量  (对变量)

delete  [ ] 指针变量  (对指针数组)

delete [ ] pt  (对数组空间的操作)

C语言中利用库函数malloc和free来分配和撤销内存空间的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-25 15:07:12

用new和delete运算符进行动态分配和撤销存储空间的相关文章

重载类的new和delete运算符成员函数

重载类的new和delete运算符成员函数1. 调用new时,先分配内存,后调用构造函数.调用构造函数的行为由编译器控制.2. 调用delete时,先调用析构函数,后释放内存.调用析构函数的行为由编译器控制.重载这两个运算符函数的目的是为了控制内存的分配与释放.如果需要对某个类型频繁地创建和销毁大量的对象,new和delete运算过程可能会耗费过多的时间,并且会产生过多的内存碎片.这两个运算符函数的原型:void * operator new(size_t sz);void operator d

C++对象模型——new 和 delete 运算符(第六章)

6.2    new 和 delete 运算符 运算符 new 的使用,看起来似乎是个单一运算,像这样: int *pi = new int(5); 但事实上它是由以下两个步骤完成: 1.通过适当的 new 运算符函数实体,配置所需的内存: // 调用函数库中的new运算符 int *pi = __new(sizeof(int)); 2.给配置得来的对象设立初值: *pi = 5; 更进一步地,初始化操作应该在内存配置成功(经由 new 运算符)后才执行: // new运算符的两个分离步骤 //

C++学习32 重载new和delete运算符

内存管理运算符 new.new[].delete 和 delete[] 也可以进行重载,其重载形式既可以是类的成员函数,也可以是全局函数.一般情况下,内建的内存管理运算符就够用了,只有在需要自己管理内存时才会重载. 重载 new 有两种形式: //以类的成员函数的形式进行重载 void * 类名::operator new ( size_t size ){ //TODO: } 和 //以全局函数的形式进行重载 void * operator new ( size_t size ){ //TODO

c/c++ 重载new,delete运算符 placement new

重载new,delete运算符 new,delete在c++中也被归为运算符,所以可以重载它们. new的行为: 先开辟内存空间 再调用类的构造函数 开辟内存空间的部分,可以被重载. delete的行为: 先调用类的析构函数 再释放内存空间 释放内存空间的部分,可以被重载. 为什么要要重载它们? 有时需要实现内存池的时候需要重载它们.频繁的new和delete对象,会造成内存碎片,内存不足等问题,影响程序的正常执行,所以一次开辟一个适当大的空间,每次需要对象的时候,不再需要去开辟内存空间,只需要

深度探索C++对象模型笔记(1)——new和delete运算符

int *pi = new int(5); new操作实际上由两步组成: (1)通过适当的new运算符函数实体,配置所需的内存. //调用函数库中的new运算符. int *pi = new = __new( sizeof( int ) ); (2)给配置得来的对象设立初值. *p = 5; 初始化应该在内存配置成功(经由new运算符)后才执行. 1 int *pi; 2 3 if( pi = __new( sizeof(int) ) ) 4 5 *pi = 5; //分两步 类似地: dele

深入javascript: in 和 delete 运算符

一.in操作符1.定义 如果指定的属性存在于指定的对象中,则in运算符会返回true.(如果一个属性是从原型链上继承来的,in运算符也会返回true) 2.数组操作 //数组 var arr = ["ben","Ben","benjamin","Benjamin"]; console.log(arr); console.log(0 in arr); //true console.log(2 in arr); //true co

深入理解js中delete运算符

之前对delete操作符理解不深太深,碰到有些问题发现自己居然自己理解不了,经过寻师访友之后发现原来是自己基础知识不够扎实,所以各位少年还是得多多修行,才能处事不惊啊! 好了进入主题,首先看个例子: 1 //例一 2 var o = { x: 1 }; 3 delete o.x; // true 4 o.x; // undefined 5 6 //例二 7 var x = 1; 8 delete x; // false 9 x; // 1 10 11 //例三 12 function x(){}

c++ new 和delete

c++中new和delete的使用方法 new和delete运算符用于动态分配和撤销内存的运算符 new用法: 1.     开辟单变量地址空间 1)new int;  //开辟一个存放数组的存储空间,返回一个指向该存储空间的地址.int *a = new int 即为将一个int类型的地址赋值给整型指针a. 2)int *a = new int(5) 作用同上,但是同时将整数赋值为5 2.     开辟数组空间 一维: int *a = new int[100];开辟一个大小为100的整型数组

C++内存分配及变长数组的动态分配

//------------------------------------------------------------------------------------------------ 第一部分 C++内存分配 //------------------------------------------------------------------------------------------------ 一.关于内存 1.内存分配方式 内存分配方式有三种: (1)从静态存储区域分配