malloc是C++语言的标准库函数;而new是C++语言中的操作符。new返回指定类型的指针,而且能够自己主动计算所需空间的大小;而malloc必需要由用户自己计算所需空间大小,并在返回后强行转换为实际类型的指针。malloc仅仅管内存分配,不能对所得的内存进行初始化,其所获内存空间中上的值是随机...
分类:
编程语言 时间:
2014-12-30 18:55:23
阅读次数:
124
下面的 C 程序分配了1024字节的内存,然后从分配的内存以外的区域读取数据,在分配内存尾部之后写数据,最后将该内存区域变得不可访问。
#include
#include
int main()
{
char *ptr = (char *)malloc( 1024 );
char ch;
//Uninitialized read
ch = ptr[1024];...
分类:
编程语言 时间:
2014-12-28 18:17:49
阅读次数:
387
通过下面的代码得出了一个结论:
在windows操作系统中,栈空间不会释放,而是如果现有的栈空间满足函数的运行,则不再申请新的栈空间,但函数退出后也不释放栈空间;如果函数运行时占空间不够,则需要再申请新的空间;
使用malloc动态申请的空间因为位于堆空间,free后可以直接释放
#include
#include
int hello1()
{
int arra[...
c#相较于c,c++而言,在内存管理上为程序员提供了极大的方便,解放了程序员与内存地址打交道,提高了程序员的工作效率。比如c中分配的malloc堆空间没有释放导致的内存泄露,数组越界导致的踩内存错误,使用了已释放的内存空间错误等等。这些在C#中统统的都不存在,主要是由于clr提供的安全检查机制...
分类:
编程语言 时间:
2014-12-27 13:50:29
阅读次数:
231
STL源码分析—空间配置器
空间配置器中门道
在STL中的容器里都是使用统一的空间配置器,空间配置器就是管理分配内存和销毁内存的。在STL将在heap空间创建一个对象分为两个步骤,第一是申请一块内存,第二是在这块内存中初始化一个对象。首先申请空间是由malloc提供,初始化一个对象时由constructor管理。销毁一个对象也是由两步骤完成,第一是销毁空间上的对象,第二是释放这块内存。
同时...
分类:
其他好文 时间:
2014-12-26 16:48:26
阅读次数:
119
为了防止内存泄露,养成检测内存分配/释放是否成功的良好习惯:
1,动态分配内存的时候检测是否分配成功,如果不成功请返回友好提示~
2,释放内存的时候将释放后的内存指针指向NULL,以保证不能被访问~
因为释放内存后,系统只是回收了指针所指的内存,此时指针是一个野指针本身仍是合法的,(只有有些类似void*的指针了),访问野指针程序当然出现异常~!
例子1:malloc()和free...
分类:
其他好文 时间:
2014-12-26 11:09:29
阅读次数:
143
安装
apt-get install valgrind
测试程序
#include
#include
int*Test(void)
{
int* x = malloc(10 * sizeof(int));
delete x;// problem 1: heap block overrun, problem 2: memory leak --x not free, ...
分类:
其他好文 时间:
2014-12-25 16:29:15
阅读次数:
118
1. 在IDE中查看Log信息当程序运行垃圾回收的时候,会打印一条Log信息,其格式如下:D/dalvikvm: , , , GC_Reason表示导致垃圾回收的原因以及当前的回收类型,包括以下几类: GC_CONCURRENT:当堆中对象数量达到一定是触发的垃圾收集 GC_FOR_MALLOC:....
分类:
移动开发 时间:
2014-12-23 12:15:30
阅读次数:
175
一、C语言中不定大小多维数组的处理:如果要给二维数组(m*n)分配空间,代码可以写成下面:char **a, i;// 先分配m个指针单元,注意是指针单元// 所以每个单元的大小是sizeof(char *)a = (char **)malloc(m * sizeof(char *));// 再分配...
分类:
其他好文 时间:
2014-12-23 01:32:20
阅读次数:
192
指针和引用的区别
指针指向一块内存,它的内容是指向内存的地址;引用是某内存的别名
引用使用是无需解引用,指针需解引用
引用不能为空,指针可以为空
引用在定义是被初始化一次,之后不可变;指针可变
程序为指针变量分配内存区域,而引用不需要分配内存区域
new和malloc的区别,free和delete的区别
malloc与free是C++/C语言的标准库函数,...
分类:
编程语言 时间:
2014-12-22 21:23:13
阅读次数:
203