美文网首页
malloc 和 free

malloc 和 free

作者: 小阿牛的爸爸 | 来源:发表于2021-10-21 16:21 被阅读0次

头文件位置

#include <stdio.h>

1 malloc

1.1 函数原型

void* malloc (size_t size);

1.2 函数介绍

分配一个大小为size字节的内存块,返回一个指向块开头的指针。
新分配的这块内存空间没有初始化,里面的内容是不确定的,所以,在使用前需要进行初始化
如果size为0,返回值取决于特定的库实现(它可能是空指针,也可能不是空指针),但返回的指针不能解引用。

1.3 函数入参

要分配的空间的大小,单位为字节,size_t是一个无符号的整型

1.4 函数返回值

指向块开头的指针。

2 free

2.1 函数原型

void free (void* ptr);

2.2 函数介绍

释放之前由调用malloc、calloc或realloc分配的内存块,使其可以再次用于进一步的分配。
如果传入的指针ptr没有指向用上述函数分配的内存块,则会导致不确定的行为
如果ptr是空指针,则函数不执行任何操作。
注意,这个函数并没有改变ptr本身的值,因此它仍然指向相同的(现在是无效的)位置

2.3 函数入参

指向先前用malloc、calloc或realloc分配的内存块的指针。

2.4 函数返回值

无。

3 示例

使用流程如下:
malloc(size)分配地址空间 -> 分配后进行初始化 -> 使用后调用free释放掉空间

#include <stdio.h>      /* printf, scanf, NULL */
#include <stdlib.h>     /* malloc, free, rand */

int main ()
{
    int i,n;
    char * buffer;

    printf ("How long do you want the string? ");
    scanf ("%d", &i);
    // 1. 分配空间
    buffer = (char*) malloc (i+1);
    if (buffer==NULL) {
        printf ("malloc space error\n");
        exit (1);
    }
    
    // 2. 初始化并赋值
    for (n=0; n<i; n++) {
        buffer[n]=rand()%26+'a';
    }
    buffer[i]='\0';

    printf ("Random string: %s\n",buffer);
    // 3. 使用完成后释放
    free (buffer);

    return 0;
}

相关文章

  • c++ smart pointer

    malloc/free malloc/free are management methods of memory ...

  • linux 内存分配malloc、calloc、realloc的

    1. malloc/calloc/realloc和free介绍: 1. malloc函数 malloc函数可以从堆...

  • 动态内存分配

    1. malloc和free malloc和free,分别用于执行动态内存分配和释放。这些函数维护一个可用内存池,...

  • 在c++中,malloc,free,new和delete的区别

    1.malloc和free用的时候是一套,new和delete用起来是一套;2.malloc和free不会去调用构...

  • C++笔试整理

    1、new 、delete 、malloc 、free 的关系malloc 与 free 是 C++/C 语言的标...

  • 2018-05-09

    new delete new delete与malloc free的区别 对于基本数据类型 malloc与free...

  • malloc,free

    malloc 返回类型为 void *,需要强转为对应的指针类型 malloc 的参数是要申请的内存大小为多少个字...

  • malloc/free和new/delete

    1. malloc/free与new/delete的区别 1、malloc/free是C语言的标准库函数;new/...

  • 内存拷贝和free的性能

    在小米note5上的测试,频繁malloc和free 1080p malloc: 33usfree: 22usme...

  • C++面试(1)

    1.new、delete、malloc、free关系 delete会调用对象的析构函数,和new对应free只会释...

网友评论

      本文标题:malloc 和 free

      本文链接:https://www.haomeiwen.com/subject/rdxhaltx.html