做网站文件下载,为推广网站做的宣传活动,傻瓜式网页制作网站,自己做的免费的网站天天重发好吗函数声明#xff1a;
void *malloc(size_t size)头文件#xff1a;
#include stdio.h函数描述#xff1a;
分配所需的内存空间#xff0c;并返回一个指向它的指针。
参数#xff1a;
size – 内存块的大小#xff0c;以字节为单位。
返回值#xff1a;
该…函数声明
void *malloc(size_t size)头文件
#include stdio.h函数描述
分配所需的内存空间并返回一个指向它的指针。
参数
size – 内存块的大小以字节为单位。
返回值
该函数返回一个指针 指向已分配大小的内存。如果请求失败则返回 NULL。
实例
下面的实例演示了 malloc() 函数的用法。
#include stdio.h
#include stdlib.hvoid update_value(int* p){*p 100;
}int main()
{//在栈上面分配变量a 占4个字节int a 10;//申请类型是int内存空间占4个字节p指针指向该4个字节的内存空间 int *p (int*)malloc(sizeof(int));//p变量也占4字节;所以sizeof(p)8个字节//赋值p只指向的动态空间为50*p 50;printf(p-value%d p%p sizeof(*p)%ld, sizeof(p)%ld sizeof(a)%ld \n, *p, p, sizeof(*p), sizeof(p),sizeof(a));free(p);//修改p指向的内存中的数据printf(p-value%d p%p sizeof(*p)%ld, sizeof(p)%ld sizeof(a)%ld \n, *p, p, sizeof(*p), sizeof(p),sizeof(a));update_value(p);printf(p-value%d p%p sizeof(*p)%ld, sizeof(p)%ld sizeof(a)%ld \n, *p, p, sizeof(*p), sizeof(p),sizeof(a));return(0);
}注当内存不再使用的时候应使用free()函数将内存块释放掉。
void*表示未确定类型的指针C/C规定void*可以强转为任何其他类型的指针关于void还有一种说法就是其他任何类型都可以直接赋值给它无需进行强转但是反过来不可以。
malloc分配的内存大小至少为参数所指定的字节数。
malloc的返回值是一个指针指向一段可用内存的起始位置指向一段可用内存的起始地址多次调用malloc所分配的地址不能有重叠部分除非某次malloc所分配的地址被释放掉malloc应该尽快完成内存分配并返回不能使用NP-hard的内存分配算法实现malloc时应同时实现内存大小调整和内存释放函数realloc和free
malloc和free是配对的如果申请后不释放就是内存泄露如果无故释放那就是什么也没做释放只能释放一次如果一块空间释放两次或者两次以上会出现错误但是释放空指针例外释放空指针也等于什么也没做所以释放多少次都是可以的。