常见内存分配的错误:
内存分配方式:
1.静态存储区域:内存在程序编译的时候就分配好,这块内存在程序的整个运行期间都存在,如全局变量、static变量
2.栈:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时,这些存储单元会被自动释放。效率高,但分配的内存容量比较有限。
3.堆:也称为动态内存,
由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。
malloc:
在堆上申请内存,最常用,释放内存用free
void* malloc(size_t size);
calloc:
与malloc分配内存相同,只是将分配的内存初始化为0
void* calloc(size_t num, size_t size);
realloc:
将原本申请的内存区域扩容,参数size大小即为扩容后的大小,因此,此函数需要size大小必须大于ptr内存大小
void *realloc(void *ptr,size_t new_size);