本文为转载加原创
c++内存分区问题
在c++中,内存分成5个区,包括堆、栈、全局(静态)存储区、文字常量区、程序代码区。
1.堆
由程序员手动分配和释放,完全不同于数据结构中的堆,分配方式类似链表。由malloc(c 语言)或new(c++)来分配,由free(c语言)和delete(c++)来释放。若程序员不释放,程序结束时由系统释放。
顺带复习下动态内存分配的方法
1)malloc和free
malloc 函数原型:void *malloc(unsigned int num_bytes);
; 其中num_bytes
是无符号整型,用于表示分配的字节数;返回值:如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。void* 表示未确定类型的指针,void *可以指向任何类型的数据,更明确的说是指申请内存空间时还不知道用户是用这段空间来存储什么类型的数据。
例子:
#include <stdio.h>
#include <malloc.h>
int main(int argc,char**argv[])
{
char *a = NULL;
a = (