目录
2.void* calloc(size_t num, size_t size);
3.void* realloc(void* ptr, size_t size);
在 C 语言中,malloc、calloc、realloc 和 free 是用于动态内存分配和管理的标准库函数。它们定义在 头文件中。
size: 要分配的字节数。
malloc 函数用于分配指定字节数的内存块,并返回指向该内存块的指针。分配的内存内容是未初始化的。回一个 void* 指针,指向分配的内存块。如果分配失败,返回 NULL。
num: 要分配的对象数量,size: 每个对象的字节数。
calloc 函数用于分配一块内存,用于存储指定数量的对象,每个对象的大小为指定字节数。分配的内存块会被初始化为零。返回一个 void* 指针,指向分配的内存块。如果分配失败,返回 NULL。
.void* realloc(void* ptr, size_t size);ptr: 指向已分配内存块的指针,size: 新的内存块大小(以字节为单位)
realloc 函数用于重新调整已分配内存块的大小。如果需要增加或减少内存块的大小,realloc 可以用来改变内存块的大小,保留原有数据(如果有的话)。返回一个 void* 指针,指向新分配的内存块。如果分配失败,返回 NULL,并且原内存块未被修改。
ptr: 指向要释放的内存块的指针。
free 函数用于释放先前由 malloc、calloc 或 realloc 分配的内存块。释放内存块后,该内存块变为不可用,且无法再次访问无返回值。
- #include
- using namespace std;
- int main()
- {
- int* ssr=(int *)malloc(40);//分配40个字节的空间
- int* sr=(int *)calloc(5,sizeof(int));//分配5个int(4个字节)所占空间,并都赋值为0
- int* r=(int*)realloc(ssr,30);//修改ssr所指向的空间并修改大小为30个字节,并返回新的内存地址给r
- ssr=r;
- free(ssr);//释放空间
- free(sr);
- return 0;
- }