1.new、delete、malloc、free关系delete会调用对象的析构函数,和new相应free仅仅会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光...
分类:
编程语言 时间:
2014-09-30 21:29:40
阅读次数:
221
概述
数组下标从0开始,虽然从初学都已经知道,《陷阱与缺陷》反复强调,而在指尖运动中,就有那么几次不小心,让“精子”掉进这个“洞里”!其次,C语言字符串必须以0收尾!
bug:
1-动态malloc或静态分配size大小字符串,存储size个字符,导致无0收尾,逾越警戒线,站在悬崖边了!
2-动态malloc或静态分配size大小字符串,访问或设置 [ size ] 字符
3-动态mal...
分类:
其他好文 时间:
2014-09-29 23:43:21
阅读次数:
285
voidGetMemory1(char*p){p=(char*)malloc(100);}voidTest1(void){char*str=NULL;GetMemory(str);//把str传进去,str是一个指针strcpy(str,"helloworld");printf(str);}char*GetMemory2(void){charp[]="helloworld";returnp;}voidTest2(void){char*str=NULL;str=GetMemory2();pr..
分类:
其他好文 时间:
2014-09-29 04:06:27
阅读次数:
268
注意几点: 分配内存不要使用new和delete,因为new的同时就把对象构造了,而我们需要的是原始内存。 所以应该使用标准库提供的allocator类来实现内存的控制。当然也可以重载operator new操作符,因为二者都是使用malloc作为底层实现,所以直接采用malloc也可以。 对象的复...
分类:
其他好文 时间:
2014-09-29 00:11:26
阅读次数:
303
在C++程序员面试中,很容易被问到new 和 malloc的区别。偶尔在quora上逛,看到Robert Love的总结,才发现自己只知道里面的一两项就沾沾自喜,从来没有像这位大牛一样去仔细思考这些问题,借着这篇文章仔细探讨下这个经典问题。...
分类:
编程语言 时间:
2014-09-28 21:51:15
阅读次数:
194
分配内存函数,malloc ()与free () 及calloc()...
分类:
其他好文 时间:
2014-09-27 19:58:30
阅读次数:
166
在C/C++ 中常用的内存分配和管理的方式有很多,如智能指针, STL容器, new/delete, malloc/free, brk, sbrk等等,最近研究了一下Unix比较底层的一种内存管理方式mmap/munmap,需要完全自己来维护分配的虚拟内存,没有任何其他辅助的数据结构来帮助维护内存空间。
一、在终端里输入 man mmap 可以查看此函数的API文档,此函数的具体描述如下:
v...
分类:
编程语言 时间:
2014-09-27 13:55:09
阅读次数:
799
node *creatline(int n){ node *head=(node *)malloc(sizeof(node)); head->data=rand()%100; head->next=NULL; node *p=head; int i=0; while (inext=(no...
分类:
其他好文 时间:
2014-09-26 01:05:57
阅读次数:
246
一、原型:extern void *malloc(unsigned int num_bytes);头文件:#include 或 #include (注意:alloc.h 与 malloc.h 的内容是完全一致的。)功能:分配长度为num_bytes字节的内存块说明:如果分配成功则返回指向被分配内.....
分类:
其他好文 时间:
2014-09-25 09:37:18
阅读次数:
183
参数策略 如果函数的参数是一个指针,不要指望用该指针去动态申请内存。如下: void GetMemory(char *p, int num)
{ p = (char *)malloc(sizeof(char) * num);
}
void Test(void)
{ char *str = NULL;...
分类:
其他好文 时间:
2014-09-24 23:23:01
阅读次数:
170