C++内存管理
C++内存管理
~青萍之末~
弱者总有弱者的理由
展开
-
malloc/free和new/delete
一、有了malloc/free为什么还要new/delete malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,转载 2017-08-19 09:24:34 · 391 阅读 · 0 评论 -
野指针和空指针
目录一、空指针常量二、空指针1、空指针指向内存的什么地方2、逻辑地址和物理地址3、空指针赋值分区4、为什么空指针访问会出现异常三、NULL指针四、零指针五、野指针1、针变量没有被初始化2、指针被free或者delete之后,没有设置为NULL,让人误以为这是一个合法指针3、指针操作超越了变量的作用范围一、空指针常量 一个表示0值...转载 2017-08-16 11:14:04 · 1176 阅读 · 0 评论 -
指针参数传递动态内存
指针参数传递动态内存 如果函数的参数是一个指针,不要指望用该指针去申请动态内存。如下示例中,Test函数的语句GetMemory(str, 100)并没有使str获得期望的内存,str依旧是NULL,为什么?void GetMemory(char *p, int num){ p = (char *)malloc(sizeof(char) * num);}void Te转载 2017-08-16 10:45:57 · 362 阅读 · 0 评论 -
指针与数组
指针与数组的对比 C++/C程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的。 数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。 指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也转载 2017-08-14 10:58:33 · 279 阅读 · 0 评论 -
常见内存错误及其对策
常见内存错误及其对策 发生内存错误是件非常麻烦的事情。编译器不能自动发现这些错误,通常是在程序运行时才能捕捉到。而这些错误大多没有明显的症状,时隐时现,增加了改错的难度。有时用户怒气冲冲地把你找来,程序却没有发生任何问题,你一走,错误又发作了。 常见的内存错误及其对策如下:一、内存分配未成功,却使用了它。 编程新手常犯这种错误,因为他们没有意识到内存分配会不成功。常用解转载 2017-08-14 10:42:10 · 614 阅读 · 0 评论 -
内存分配方式和控制内存分配
内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还...转载 2017-08-12 13:41:18 · 2079 阅读 · 2 评论