动态内存开辟

简介: 动态内存开辟


目录

序言

malloc

声明

参数

返回值

使用

free

声明

参数

使用

calloc

声明

参数

使用

realloc

声明

介绍

参数

返回值


序言

malloc

声明

void* malloc (size_t size)

参数

size  --- 要开辟的空间大小(单位为字节)

返回值

(1)开辟成功,返回指向这块儿空间的无类型指针。

(2)若开辟的空间太大,堆区剩余空间无法提供这么大空间,那么空间开辟失败,返回NULL。

使用

int*a;
a=(int*)malloc(10);

 (1)malloc返回类型为无类型,使用时需要强制类型转换。

(2)常与free配套使用。

free

声明

void free (void*memblock)

参数

memblock---指向要释放空间的指针

使用

int main()
{
   int *P;
   p=(int*)malloc(10);
   free(p);
   p=NULL;
}

(1)当在堆区申请的动态空间不在使用时,就需要将空间归还给机器,这时候我们就可以借助free函数。

(2)当将p所指向的空间释放后,p就指向一块儿非法空间,这时候就需要,将p指针置为空指针。

calloc

声明

void *calloc(size_t num,size_t size)

参数

num---要开辟的元素个数

size---每个元素占的字节数

返回值

与malloc相同

使用

(1)会将开辟的空间全部初始化为0;

(2)其余用法与malloc相同。

realloc

声明

void*realloc(void*memblock,size_t size)

介绍

realloc用来调整动态开辟内存空间的大小,让动态内存开辟变得更加灵活。

参数

memblock---指向要扩增的空间

size---要扩增的大小

返回值

(1)若原先空间后面有足够内存空间,则realloc直接在他的后面追加空间,返回指向这块儿空间的指针。

(2)若原先空间不够大,realloc则会重新开辟一块儿新的空间,释放原先的空间,返回新空间的地址。

(3)若开辟空间太大,则返回空指针,且原先那块空间不会被释放。


相关文章
|
7月前
|
编译器 C语言 C++
【C语言】realloc()函数详解(动态内存开辟函数)
【C语言】realloc()函数详解(动态内存开辟函数)
102 0
|
7月前
|
编译器 C++
C/C++动态内存开辟(详解)
C/C++动态内存开辟(详解)
|
存储 编译器 C语言
C语言进阶第六课-----------字符分类函数和内存的开辟 2
C语言进阶第六课-----------字符分类函数和内存的开辟
|
C语言
C语言进阶第六课-----------字符分类函数和内存的开辟 1
C语言进阶第六课-----------字符分类函数和内存的开辟
|
程序员 编译器 C语言
动态内存函数,内存开辟,柔性数组(超详细)
动态内存函数,内存开辟,柔性数组(超详细)
78 0
|
Unix 程序员 Linux
【OSTEP】动态内存开辟 | 内存API常见错误 | UNIX: brk/sbrk 系统调用 | mmap创建匿名映射区域 | mmap创建以文件为基础的映射区域
【OSTEP】动态内存开辟 | 内存API常见错误 | UNIX: brk/sbrk 系统调用 | mmap创建匿名映射区域 | mmap创建以文件为基础的映射区域
271 0
|
6月前
|
C语言
C语言学习记录——动态内存开辟常见的错误
C语言学习记录——动态内存开辟常见的错误
37 1
|
7月前
|
编译器 C++
内存对齐与内存开辟。结构体(struct),位段,枚举类型(enum),联合体(union)。
内存对齐与内存开辟。结构体(struct),位段,枚举类型(enum),联合体(union)
42 1
|
6月前
|
C语言
动态内存开辟(下)
动态内存开辟(下)
29 0
|
6月前
|
编译器 C语言
动态内存开辟(上)
动态内存开辟(上)
29 0