1、C/C++内存分类(引用C++ Primer )(对象在C语言中可以理解为变量)
1.1、静态内存:静态内存用来保存局部static对象、类static数据成员、以及定义在任何函数之外的变量
1.2、栈内存:栈内存用来保存定义在函数内非static对象。(当然包含函数参数开辟的内存)
1.3、动态内存:每个程序还有一个内存池,这部分内存被称作自由空间(free store)或者堆(heap)。程序用堆来存储动态分配的内存(dynamically allocate)的对象,也就是,那些在程序运行时分配的对象。动态对象的生存期由程序来控制,所以,不再使用动态对象时,我们的代码必须显示的销毁它们。
note:分配在静态或栈内存的对象由编译器自动创建和销毁,对于栈对象,仅在其定义的程序块运行时才存在,static对象在使用之前分配,在程序结束时销毁。
2、C/C++内存分配相关函数以及运算符
2.1、C分配内存函数如下:(在Linux下查询得知,使用命令:man 3 malloc )
MALLOC(3) Linux Programmer's Manual MALLOC(3)
NAME
malloc, free, calloc, realloc - allocate and free dynamic memory
SYNOPSIS
#include <stdlib.h>
void *malloc(size_t size);
void free(void *ptr);
void *calloc(size_t nmemb, size_t size);
void *realloc(void *ptr, size_t size);
size_t类型: size_t is the unsigned integer type of the result of