C++笔记——malloc基本⽤法
int *p = (int*)malloc(4);sizeof 指针
malloc 包含在“malloc.h”头⽂件中
(int*)强制类型转换
malloc函数只有⼀个形参,并且形参是整型
4 表⽰请求系统为本程序分配4个字节
malloc函数会为我们分配内存,只能返回第⼀个字节地址
该⾏代码分配了8个字节,p变量占4个字节,p所指向的内存也占4个字节
p本⾝所占的内存是静态的,p所指向的内存是动态分配的
free(p)表⽰把p所指向的内存给释放掉,p本⾝是静态的,不能由程序员⼿动释放
int *p;
p = (int*)malloc(sizeof(int) * 128);
//分配128个(可根据实际需要替换该数值)整型存储单元,malloc申请的是虚拟内存,并不是物理内存
//并将这128个连续的整型存储单元的⾸地址存储到指针变量p中
double *pd = (double*)malloc(sizeof(double) * 12);
//分配12个double型存储单元,
//并将⾸地址存储到指针变量pd中
第⼀、malloc 函数返回的是 void * 类型。
对于C++,如果你写成:p = malloc (sizeof(int)); 则程序⽆法通过编译,报错:“不能将 void* 赋值给 int * 类型变量”。
所以必须通过 (int *) 来将。⽽对于C,没有这个要求,但为了使C程序更⽅便的移植到C++中来,建议养成强制转换的习惯。
第⼆、函数的为 sizeof(int) ,⽤于指明⼀个需要的⼤⼩。
malloc()函数其实就在内存中⼀⽚指定⼤⼩的空间,然后将这个空间的⾸地址范围给⼀个指针变量,这⾥的指针变量可以是⼀个单独的指针,也可以是⼀个数组的⾸地址,这要看malloc()函数中参数size的具体内容。我们这⾥malloc分配的内存空间在逻辑上连续的,⽽在物理上可以连续也可以不连续。对于我们程序员来说,我们关注的是逻辑上的连续,因为操作系统会帮我们安排内存分配,所以我们使⽤起来就可以当做是连续的。
可以通过malloc(size_t)函数调⽤申请超过机器物理内存⼤⼩的内存块。
内存泄漏⼀般是指程序申请了⼀块内存,使⽤完后,没有及时将这块内存释放,从⽽导致程序占⽤⼤量内存。
⽆法通过内存释放函数free(void*)直接将某块已经使⽤完的物理内存直接还给操作系统。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。