zoukankan      html  css  js  c++  java
  • C语言常用库函数:内存申请、设置与复制


    库函数:stdlib.h

    一、内存申请

    // 函数原型:void *malloc(size_t size);
    // size – 内存块的大小,以字节为单位, 返回一个指针,需要手动初始化内存
    // 函数原型:void *calloc(size_t num, size_t size);
    // num-- 要被分配的元素个数; size – 元素的大小;分配成功会返回一个指针,并且会设置分配的内存为零
    
    char *temp = (char *)malloc(MEM_SIZE * sizeof(char));
    char *tempc = (char *)calloc(MEM_SIZE, sizeof(char));
    

    二、内存设置

    // errno_t memset_s(void* dest, size_t destMax, int c, size_t count)
    //  c-要设置目的缓冲的字符, count-要设置目的缓冲的字符个数
    errno_t ret = EOK;
    ret = memset_s(temp, MEM_SIZE, 0, MEM_SIZE);      // 初始化为0
    printf("ret=%d
    ", ret);
    
    ret = memset_s(temp, MEM_SIZE, 'a', 10);
    printf("ret=%d, temp=%s
    ", ret, temp);
    

    三、内存复制

    // errno memcpy_s(void *dst, size_t destMax, const void *src, size_t count);
    // errno memcpy_s(void *dst, size_t destMax, const void *src, size_t count);
    // 当内存发生局部重叠的时候,memmove保证拷贝的结果是正确的,memcpy不保证拷贝的结果的正确
    // count:数组复制时候,第三个参数为字节数,而不是数组大小
    // 该函数返回一个指向目标存储区destin的指针
    memcpy_s(temp, MEM_SIZE, "abcdefghij", 10);
    printf("ret=%d, temp=%s
    ", ret, temp);
    
    memmove_s(tempc, MEM_SIZE, temp, 10);
    printf("ret=%d, tempc=%s
    ", ret, tempc);
    
    
  • 相关阅读:
    git Permissions 0777 for '/home/xxx/.ssh/id_rsa' are too open.
    Linux wc指令解析
    RK3288 开机动画旋转
    tp3.2 事务
    PHP实现动态获取函数参数的方法
    laravel 配置设置
    swoole 使用异步redis的前置条件
    php回调函数的概念及实例
    swoole 安装
    linux 源码安装PHP
  • 原文地址:https://www.cnblogs.com/HZL2017/p/15113796.html
Copyright © 2011-2022 走看看