c与指针 读书笔记 05

malloc分配一块连续的内存。
malloc实际分配的可能比你请求的要多一些。
如果系统无法向malloc提供更多的内存,malloc就会返回一个NULL指针.
malloc返回一个void *指针
对于要求边界对齐的机器,malloc所返回的内存满足边界对齐
malloc没有对内存清0
calloc有个对内存清0的过程
realloc用来修改一个原本已经分配内存块的大小。如果要缩小内存块,该内存块尾部的部分内存将被拿去。如果扩展一块内存,有两种情况。情况一,这块内存原有的内容将被保留,新增加的内存添加在原有内存的后面。情况二,如果原有内存块无法改变大小,realloc将分配另一块正确大小的内存,并把原先那块内存的内容复制到新的块中。因此在使用realloc之后,你就不能再使用指向旧内存的指针,而是应该改用realloc所返回的指针
如果realloc函数的第一个参数是NULL,那么它的行为就和malloc一模一样.

释放一块内存的一部分是不被允许的。动态分配的内存必须整块一起释放.
不要释放已被free的内存.

函数只能返回一个标量,不能返回一个数组

预处理器的主要任务包括删除注释,插入被#include指令包含的文件的内容。定义和替换由#define指令定义的符号以及确定代码的部分内容是否应该根据一些条件编译指令进行编译.

__FILE__ 进行编译的源文件名
__LINE__ 文件当前行的行号
__DATE__ 文件被编译的日期
__TIME__ 文件被编译的时间
__STDC__ 如果编译器遵循ANSI C,其值就为1,否则未定义

#include 预处理器删除这条指令,并用包含文件的内容取而代之。
一个头文件如果被包含在10个源文件中,它实际上被变异了10次

#include <filename> 函数库文件包含.unix下搜索usr/include目录
#include "filename" 本地文件包含

宏的优点有两个
1,与类型无关
2,执行速度快于函数,不存在函数调用返回的开销

系统提供至少三个流,
标准输入,标准输出和标准错误.
名字分别为stdin,stdout,stderr.
r 读取
w 写入
a 添加
rb 二进制读取
wb 二进制写入
ab 二进制添加
a+ 打开更新,此流可读写

任何操作都是不可靠的,都有可能失败.所以要检查

volalite 关键字用于防止编译器自动优化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值