`
leign
  • 浏览: 166690 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

有关内存管理与指针

阅读更多
1、内存耗尽
如果在申请动态内存时找不到足够大的内存块,malloc和new将返回NULL指针,宣告内存申请失败。
2、计算内存容量
用运算符sizeof可以计算出数组的容量(字节数)。注意区别指针与其他类型的大小

3、malloc/free 的使用要点
函数malloc的原型如下:
void * malloc(size_t size);

      malloc返回值的类型是void *,所以在调用malloc时要显式地进行类型转换,将void * 转换成所需要的指针类型。malloc函数本身并不识别要申请的内存是什么类型,它只关心内存的总字节数。
函数free的原型如下:
void free( void * memblock );

      如果p是NULL指针,那么free对p无论操作多少次都不会出问题。如果p不是NULL指针,那么free对p连续操作两次就会导致程序运行错误。
4、new/delete 的使用要点
运算符new使用起来要比函数malloc简单得多,例如:
int *p1 = (int *)malloc(sizeof(int) * length);

int *p2 = new int[length];

这是因为new内置了sizeof、类型转换和类型安全检查功能。对于非内部数据类型的对象而言,new在创建动态对象的同时完成了初始化工作。如果对象有多个构造函数,那么new的语句也可以有多种形式。
如果用new创建对象数组,那么只能使用对象的无参数构造函数。
在用delete释放对象数组时,留意不要丢了符号‘[]’。
分享到:
评论

相关推荐

    ch11内存管理和指针

    内存管理和指针.pdf 内存管理和指针.pdf

    C# 2.0 内存管理和指针

    如果很好地理解了内存管理和C#提供的指针功能,也就能很好地集成C#代码和原来的代码,并能在非常注重性能的系统中高效地处理内存。 本章的主要内容如下: ● 运行库如何在堆栈和堆上分配空间 ● 垃圾收集的工作原理 ...

    指针和内存分配详解

    深入的探讨了,指针和内存问题,很好的帮你解决指针和内存的各种疑惑

    C#中的指针和内存管理以及垃圾回收PPT

    以下是关于C#中指针、内存管理和垃圾回收的一些基本信息: 指针(Pointer) 在C#中,通过使用unsafe关键字,可以声明不安全代码块,从而允许使用指针。例如: unsafe { int x = 10; int* ptr = &x; Console.WriteLine...

    C++指针与内存管理.doc

    程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。

    C#的内存管理:堆、栈、托管堆与指针

    堆、栈、托管堆与指针的内存管理,有谁知道,还不赶快下载

    内存管理内存管理内存管理

    对实际编程来说,理解您的内存管理器的能力与局限性至关重要。在大部分系统语言中,比如 C 和 C++,您必须进行内存管理。本文将介绍手工的、半手工的以及自动的内存管理实践的基本概念。 追溯到在 Apple II 上...

    指针是C语言可以用来直接访问内存地址

    通过指针,我们可以实现对动态内存的灵活管理。 结构体是一种自定义的数据类型,它可以包含多个不同类型的成员变量。通过结构体指针,我们可以方便地实现对结构体变量的访问和操作。此外,我们还可以通过结构体指针...

    收集的内存管理内存分配资料

    内存 内存管理 内存分配 指针 数组 指针与数组...等等之间的详细介绍和比较

    C++基础入门:指针与内存管理.docx

    在C++编程中,指针和内存管理是非常重要的概念。正确地使用指针和有效地管理内存可以提高程序...本文将介绍指针的基本概念和语法,并深入讨论与内存管理相关的重要知识点。我们将通过实例代码来说明这些概念的具体应用

    c++指针 实例演练与提高

    21.3.2 访问指针指向的内存 21.4 小王成绩管理系统 V3.0 21.5 字符串指针 21.5.1 为字符串分配指定大小的空间 21.5.2 字符串常用函数 21.5.2.1 字符串比较 21.5.2.2 字符串复制 21.6 指针数组 ...

    C++指针参数传递内存详解

    用图示深度剖析c++指针参数传递内存时的详细过程,打破你以往对函数指针参数传递的误解(编译器总是要为函数的每个参数制作临时副本)。

    C++并发编程中的内存管理笔记.md

    通过学习可以系统掌握C++中的内存管理与优化方法,包括动态内存、智能指针、并发内存管理、性能优化等方面。 使用建议: 重点学习并发内存管理和优化部分的实现代码,最好可以边看边在IDE中模拟实践。也可以在实际项目...

    操作系统(内存管理)

    对实际编程来说,理解您的内存管理器的能力与局限性至关重要。在大部分系统语言中,比如 C 和 C++,您必须进行内存管理。本文将介绍手工的、半手工的以及自动的内存管理实践的基本概念。 追溯到在 Apple II 上进行...

    电子-stm32cppTest内存管理支持智能指针和碎片整理.zip

    电子-stm32cppTest内存管理支持智能指针和碎片整理.zip,单片机/嵌入式STM32-F0/F1/F2

    C语言基础知识:指针和内存管理.docx

    C语言是一门强大而受欢迎的编程语言,而指针和内存管理是C语言中最重要的概念之一。理解指针和内存管理的原理对于编写高效且可靠的C代码至关重要。本文将介绍C语言中指针和内存管理的基本知识,并提供相关的代码示例...

    C++智能指针实现(不用再担心你的内存泄露)

    代码量,2.5KB,指针共享操作,自动在最后一个智能指针销毁时delete,不再产生内存泄露。内含简单使用范例。不支持管理数组。设有Debug版本的断言,确保智能空指针不被使用。 /* 智能指针类 不能用于数组,指针指向...

    【程序员面试准备3】-面向对象-C++基础-数据结构-JAVA-内存管理-指针

    【程序员面试准备3】--【面向对象】-【C++基础】-【数据结构】-【JAVA】-【内存管理】-【指针】

    C++内存管理.doc

    1.1.4 指针与数组的对比 1.1.4.1 修改内容 1.1.4.2 内容复制与比较 1.1.4.3 计算内存容量 1.1.5 指针参数是如何传递内存的? 1.1.6 杜绝“野指针” 1.1.7 有了malloc/free为什么还要new/delete? 1.1.8 内存耗尽...

Global site tag (gtag.js) - Google Analytics