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\n", ret);
ret = memset_s(temp, MEM_SIZE, 'a', 10);
printf("ret=%d, temp=%s\n", 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\n", ret, temp);
memmove_s(tempc, MEM_SIZE, temp, 10);
printf("ret=%d, tempc=%s\n", ret, tempc);