一、栈区、堆区、静态区(全局区)、常量区、代码区:1、栈:由系统根据数据类型所占字节数在此区域开辟存储空间,使用结束后,再由系统释放。
(系统分配,系统释放)2、堆、手动分配,手动释放。3、静态、 static:直到程序运行结束 才会被 释放。4、常量占用内存,只读状态,决不可修改。5、代码、所有的语句编译后会生成CPU指令存储在代码区。二、malloc、calloc、realloc...
分类:
编程语言 时间:
2015-06-17 16:39:15
阅读次数:
151
#include
#include
#include
#include
char *my_itoa(int value, char *s)
{
int sign;
int i = 0,j,k;
char *tmp = (char *)malloc(sizeof(char)*strlen(s));
if((sign=value) < 0) //记录符号,使value为正数
va...
分类:
其他好文 时间:
2015-06-17 15:24:47
阅读次数:
105
我想举一个自己最近在项目中犯的错误来说明要踏踏实实做人,不要做装B青年
在代码中,我需要在一个library和一个daemon之间通过socket传送数据包,包的格式定义如下(为了简化,我就用最简单的数据类型举例):
typedef struct {
int head;
int size; //指明整个包的长度
char reply;
char data[0];
} packet;
packet* cmd = malloc (sizeof...
分类:
编程语言 时间:
2015-06-16 21:19:34
阅读次数:
131
uboot的第二阶段主要是start_armboot函数
gd = (gd_t*)(_armboot_start - CFG_MALLOC_LEN - sizeof(gd_t));
在uboot代码和堆空间下面开辟一个全局变量gd的空间,大小就是gd_t的大小
gd->bd = (bd_t*)((char*)gd - sizeof(bd_t));//gd结构体中bd结构体开辟空间,紧挨...
分类:
其他好文 时间:
2015-06-15 11:18:54
阅读次数:
107
任何一个用过或学过C的人对malloc都不会陌生。大家都知道malloc可以分配一段连续的内存空间,并且在不再使用时可以通过free释放掉。但是,许多程序员对malloc背后的事情并不熟悉,许多人甚至把malloc当做操作系统所提供的系统调用或C的关键字。实际上,malloc只是C的标准库中提供的一个普通函数,而且实现malloc的基本思想并不复杂,任何一个对C和操作系统有些许了解的程序员都可以很...
分类:
其他好文 时间:
2015-06-14 22:51:48
阅读次数:
183
场景:
1. 使用auto_ptr 的方式可以wrap类对象, 之后在方法结束后可以自动释放对象, 参考;这样在有条件判断的语句时可以省掉free语句或CloseHandle.
http://blog.csdn.net/infoworld/article/details/9008911
2.C++的特性之一就是类对象(非返回值的对象)在方法结束后会自动调用析构函数,这样在析构函数里可以放一些释放资源的操作.
3. 这里实现了一个类似auto_ptr的类的实用Wrap类,可以参考根据自己需要自定义特...
分类:
编程语言 时间:
2015-06-14 18:35:49
阅读次数:
178
深入分析C语言的函数malloc、free和C++的操作符new、delete之间的异同...
分类:
其他好文 时间:
2015-06-13 23:07:41
阅读次数:
119
先来看两段代码--
错误代码:
#include "string.h"
#include
#include
void test(char ** dest, char * src, int n) {
(*dest) = (char*) malloc(sizeof(char) * n);
strcpy(*dest, src);
}
int main(int argc, char** a...
分类:
系统相关 时间:
2015-06-13 17:10:41
阅读次数:
211
一、原型:extern void *malloc(unsigned int num_bytes);头:#include 或 #include (注意:alloc.h malloc.h 的内容是全然一致的。)功能:分配长度为num_bytes字节的内存块说明:假设分配成功则返回指向被分配内存的指...
分类:
其他好文 时间:
2015-06-13 12:47:42
阅读次数:
109
1.malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存2.对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由malloc/fr...
分类:
其他好文 时间:
2015-06-13 11:19:25
阅读次数:
94