趣学 C 语言(五)—— 内存管理

你可以分配多大的内存

int mb = 0;
while (malloc(1 << 20))
    ++mb;
printf("Allocated %dmb total\n", mb);

malloc/memset/free:三人行

  • malloc:分配指定大小的一段内存空间
  • memset:该内存空间统一赋初值,头文件string.hmemory.h
  • free:显示地释放地址空间

memset:为字符数组(字符串)而生

这也是其(以及memcpy)为什么会在string.h中的道理:

void *memset(void *s, int ch, size_t n);

函数解释:将s中前n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法

int a;
memset(&a, 1, 4);
                        // a 被赋值为:0x0001 0001 0001 0001
printf("%d\n", a);  
                        // 2^0+2^8+2^16+2^24 = 16843009 

memset(, 0, ) 与 = {0} 的效率分析

memset 效率要更胜一筹,事实上,={0}最终也会去调用memset

你可能感兴趣的:(趣学 C 语言(五)—— 内存管理)