目录
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;
- }