要知道什么是内存的动态分配,首先要清楚内存在计算机中内存是如何划分的:
如图,内存区域大致分为以下几个区域:
栈区(向下增长)(stack):由编译器自动分配释放,存放:局部变量,形参,返回值....,该空间内的所有位都会初始化为0
返回值 若分配成功,则返回一个指向已分配的空间开头的指针;若分配失败,则返回空指针
如果想了解更多关于calloc()函数相关信息,如calloc()函数参数的设定...功能 释放ptr指向的空间,让这部分空间能继续用于之后的动态分配.当ptr为空指针时,不执行任何操作.除此之外,当实际参数与之前通过malloc(),calloc(),realloc()返回的指针不一致时...,或者ptr指向的空间已经通过调用free()或realloc()被释放时,则作未定义处理....因此,在使用动态内存开辟空间时,我们要格外小心不要出现越界访问的问题.
3.对非动态开辟内存使用free释放
因为p是由编译器分配到栈区的,不属于堆区,因此不能使用free释放.
void test