完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
本帖最后由 michael_llh 于 2016-8-4 18:56 编辑
1.void *memset(void *s, int ch, size_t n); 首先接触的是这个函数,从字面意义上猜测应该是Memory set的意思,也就是内存设置,说的明白一点就是内存的内容设置。那么对于一个连续的内存空间,该函数是十分有用的,可以通过指针的方式直接修改一块内存空间的内容。下面我们举个例子来说明: char buf[4] = {1,2,3,4}; memset(buf,0,sizeof(char)*4); 就类似上面的用法,简单解释一下三个参数的内容吧! void *s:就是传入的内存的起始地址 int ch:则是我们想把这块内存区域修改的值 size_t n:则是这块内存区域的大小,这里的size_t是一个类型重定义,typedef unsigned int size_t; void *~:这个函数带有一个返回值,这个返回值就是s的地址,就是我们清除的那块内存的起始地址。 这是一个linux底下的系统函数,我们可以通过man来查看他具体的使用方法。 有几个常见错误,具体的大家可以自行查看百度百科的内容: 网址: http://baike.baidu.com/link?url=NeWCw88JpBvFJkVSr39-ddFUMFwpEhvysHDEYnoatvE15aiZf0dI34XYx1ZWHKmu0BbjqlYYmK09raVj1XKNva 2. 段错误 段错误就是指我们的程序在运行是访问内存超出了系统所给定这个程序的内存大小。英文就是segmentfault,这个名字就是著名的那个程序问题讨论的网站了,相信有了解的人不会陌生。 3. 一个进程中读取一个文件两次 我们在一个进程中同时读取一个文件两次,那么Linux会给定两个文件描述符,在我的理解,此时,Linux会拷贝两次文件的信息在内存当中,而两个不同的文件描述符则决定了说他们两个是分别读取的,而不是接续读取。分别有着自己的文件指针。 举个例子,比如说有一个文件,名字为a.txt,当中的内容是abcd,那么一次读取一个字节,两次打开文件,最后输出的结果是abcd和abcd,两者是独立的。 4.一个进程中两次写入一个文件 和读取一样的道理,他也是分别写入,也就是说,比如一个写入的是a,另外一个写入的是b,两个写入总共写入了四次,一次写一个字节,那么最终的结果是bbbb(这里我们假设写入b在写入a之后)。 那么我们为了实现接续写,也就是得到abababab的结果的话,可以直接在open函数中加入O_APPEND就可以了。就可以实现结续写的效果。从字面上理解APPEND就是为了两者相互关联,虽然两个写入是独立的,但是有了O_APPEND实现了一个效果就是将两个写入的文件指针相互关联。当其中一个文件指针向前移动的时候另外一个文件指针也会相应的向前移动,从而实现了接续写的目的。 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
TuyaOpen开源 + DshanPi-A1(RK3576)开发板的Tuya IoT平台接入与AI大模型整合方案(笔记)
1353 浏览 0 评论
「含关键代码」基于AM3352/AM3354/AM3359的Linux开发案例分享
5255 浏览 0 评论
87860 浏览 0 评论
【高手问答】如何做到精通linux技术?资深工程师带你突破难点
5320 浏览 2 评论
4009 浏览 2 评论
2352浏览 1评论
SiRider S1芯擎工业开发板测评+1.防止黑客入侵通信监控系统(PSA)
1673浏览 0评论
TuyaOpen开源 + DshanPi-A1(RK3576)开发板的Tuya IoT平台接入与AI大模型整合方案(笔记)
1355浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-10 07:33 , Processed in 0.432808 second(s), Total 35, Slave 28 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2434