首页 > 其他分享 >malloc、calloc和realloc的区别

malloc、calloc和realloc的区别

时间:2023-02-10 01:12:24浏览次数:69  
标签:malloc int realloc 内存 calloc size

1.malloc函数

使用方法:参数是所需申请的内存块的字节数,返回指向申请的内存块的首地址的无类型指针,malloc申请的内存块是未初始化的。

函数原型:

void* malloc(size_t num_size);//num_size = 需要申请的字节数

使用案例:

int* p = (int*) malloc(10*sizeof(int));//申请10个int类型大小(40)字节的内存块。

2.calloc函数

使用方法:参数是内存块所存元素的个数和内存块所存元素的字节大小,返回指向申请的内存块的首地址的无类型指针,calloc申请的内存块内每个字节都初始化为0。

函数原型:

void* calloc(size_t elem_num, size_t elem_size);

使用案例:

int* p = (int*)calloc(10, sizeof(int));

3.realloc函数

使用方法:用于扩充内存时,重新分配内存,会将原内存的内容复制到新内存中,参数是指向原内存块首地址的指针和新内存块的字节数,返回新内存块首地址的无类型指针。

函数原型:

void* realloc(void *p, size_t new_size);

使用案例:

int* p = (int*) malloc(100 * sizeof(int));
int* new_p = (int*) realloc(p,  1000);

 

标签:malloc,int,realloc,内存,calloc,size
From: https://www.cnblogs.com/mshentaiBlog/p/17107595.html

相关文章

  • new和malloc的区别
    从表层调用来看:1.名称/语法一个是操作符,一个是调用函数(cdecl)int*v1=newint;//无需指定内存块的大小int*v2=(int*)malloc(sizeof(int));//需显式指出内存块的......
  • c分配内存底层函数 realloc
    realloc(void*__ptr,size_t__size):更改已经配置的内存空间,即更改由malloc()函数分配的内存空间的大小。如果将分配的内存减少,realloc仅仅是改变索引的信息。如果是将......
  • C++ malloc下申请内存途径
    之前就因为glibc的free不一定会将内存归还OS,导致OOM,造成了上千万损失,当时心态差点崩了五年前的时候,因为OOM导致进程无故被kill掉,也没有coredump,分析了好久,最后发现是因为......
  • x64平台下采用malloc申请的内存,用memset清零时报错???????
    问题详述如下示例代码,在x86平台下可以正常运行,改成x64平台报错;(double类型同样会报错)#include<stdio.h>#include<string.h>intmain(){ doubleb[10]; memset((v......
  • C-指针参数不能直接malloc
    函数的指针参数不能直接使用malloc,直接malloc指针还是NULL。举例:voidtest_func(char*p,intnum){ p=(char*)malloc(num);}当调用test_func给p分配内存时就会失......
  • malloc()函数
    1、malloc()函数malloc()函数的头文件是stdlib.h,其函数声明如下:void*malloc(size_tsize);其中参数size_tsize表示动态内存分配空间的大小,以字节为单位。size_t是ty......
  • ThrealLocal原理讲解
    ThrealLocal是面试中的一个重点,所以掌握好这部分知识点至关重要的。你可能会用到的链接:​ThreadLocal源码分析​​Java的强、软、弱、虚四种引用类型文章目录​​1、Thread......
  • new和delete与malloc和free的区别
    new和delete与malloc和free的区别总结重要区别1、malloc和free是C语言的标准库函数;new和delete是C++中的操作运算符。以上两种方式均可以实现对象在堆中分配空间和回收,那......
  • CSAPP MallocLab 笔记
    CSAPPMallocLab笔记CS15-213labnotessbrk函数为了实现动态的内存分配,一个核心的函数就是sbrk。memoryalignment8字节对齐的地址特征,其地址数值的16进制表......
  • linux 内存管理(四)malloc--mmap--brk
    用strace分析malloc内存申请过程。长话短说,申请内存空间一般就两种方法,一种是malloc,另一种是mmap映射空间。 在使用malloc()分配内存的时候,可能系统调用brk(),也可能调用m......