Programming abstractions in C阅读笔记:p127-p129

《Programming Abstractions In C》学习第51天,p127-p129,总结如下:

一、技术总结

1. string library

掌握常用函数如strlen,strcpy用法。

2.buffer overflow(缓冲区溢出)

(1)什么是buffer?

p129,Arrays that are preallocated and later use as a repository for data called buffers。

(2)什么是缓冲区溢出?

p129,Writing data past the end of an buffer is a common programming error called buffer overflow。

c 复制代码
//buffer overflow示例
char *src = "Hello";
char dst[1]; // dst称为buffer

strcpy(dst, src); // 该操作会导致buffer overflow问题

书中只是做一个简单的说明,具体可参考:

(1) wikipedia, Buffer overflow: https://en.wikipedia.org/wiki/Buffer_overflow

二、英语总结

1."The function will go ahead and copy characters right on past the end of the buffer."语法分析

答:这里的应该是The function will go ahead and (copy characters right) (on past the end of the buffer),这句话有几个要注意的地方:

(1)right

adv. exactly or all the way(完全地),指的是"一直复制/继续复制"。在原文中也有一点"强调"的意思--虽然字符串已经超过了缓冲区的长度(Buffersize),但是strcpy函数还是会复制。当然,副词在句子中往往可以忽略,直接理解为copy也是可以的。

(2)on the end

这里之所以用on, 可能是因为data对buffer而言是on,例如:I have a pimple right on the end of my nose。参考:https://ell.stackexchange.com/questions/111682/on-the-end-of-something

(3)past

这里为什么使用past呢?如果不用,那么on the end of buffer也说得通。这里之所以用past,表示已经超过了缓冲区,past取"prep. to a position that is further than a particular point"之意。

2.obligation什么意思?

答:

(1)oblige:ob-("to") + ligare("to bind"),to bind by oath(以誓言约束)。

(2)oblige > obligation:obligation的意思是"n. the fact that you are obliged to do sth"(义务,责任)

p129,"you have an obligation to check the length of the source string before you copy it using strpy"。

3.equivalent of语法分析

答:p129,"Thus,the Pig Latin equivalent of any is anyway",初看到这句话的时候心里是困惑的,因为记忆中都是把equivalent当做形容词用,后面接to。这里接of,那么就是用作名词:n. sth that has the same amount,value, purpose etc as sth else。

三、参考资料

1. 编程

(1)Eric S.Roberts,《Programming Abstractions in C》:https://book.douban.com/subject/2003414

2. 英语

(1)Etymology Dictionary:https://www.etymonline.com

(2) Cambridage Dictionary:https://dictionary.cambridge.org

欢迎搜索及关注:编程人(a_codists)

相关推荐
一弓虽12 分钟前
java基础学习——java集合简单介绍及使用
java·学习
非凡自我_成功14 分钟前
关于C语言初步的一些基础知识整理(2)
c语言·开发语言
Alan CGH15 分钟前
高并发写利器-组提交,我的Spring组件实战
java·后端·spring
两笼包子一碗馄饨20 分钟前
【软考网工笔记】操作系统管理与配置——Windows
windows·笔记
快乐星球居民13号28 分钟前
【XJTUSE算法】考题回忆及复习建议
笔记·算法
苹果酱056733 分钟前
Pytorch机器学习——1 深度学习介绍
java·vue.js·spring boot·mysql·课程设计
马丁•路德•王41 分钟前
Java测试开发平台搭建(八) Jenkins
java·servlet·jenkins
李歘歘1 小时前
Redis数据库——Redis雪崩、穿透、击穿
java·数据库·redis·mysql·缓存·go
神的孩子都在歌唱1 小时前
你已经分清JAVA中JVM、JDK与JRE的作用和关系了吗?
java·开发语言·jvm
一条小小yu1 小时前
从零开始手写缓存之如何实现固定缓存大小
java·spring·缓存