要知道什么是内存的动态分配,首先要清楚内存在计算机中内存是如何划分的:
如图,内存区域大致分为以下几个区域:
栈区(向下增长)(stack):由编译器自动分配释放,存放:局部变量,形参,返回值....这样的内存使用方式有两个特点:
内存空间开辟大小是固定的.
数组在声明的时候,必须指定数组的长度,它所需要的内存在编译时分配....()
realloc
头文件 #include
格式 void * realloc(void* ptr , size_t size);
功能 更改ptr指向的已分配空间的大小,重新分配为...size大小
返回值 若分配成功,则返回一个指向已分配的空间开头的指针;若分配失败,则返回空指针
如果想了解更多关于realloc()函数相关信息,如realloc()函数参数的设定,返回值的设定,...i++)
{
*(p + i) = i;//当i是10的时候会造成越界访问
}
free(p);
}
在vs2022中测试该代码:
可以看到,编译器直接报错"检测到堆损坏