不知放哪,与内存打交道

https://blog.csdn.net/misskissC/article/details/8009666

先提一点:
你用的是C++的标准输入函数~
而不是C语言中的函数~

关于原理~
大致是是这样的~:
对于你所输入的数据~其实输入的时候~是保存在缓冲区stdin中的~
但是当你输入数据为123456时~到底是作为整型数据123456呢?
还是当做一个字符串"123456"?
在C语言中,这取决于你设置的格式控制字符串~即%d、%c还是%s,如果是%d,则自动识别回车符(或其他非数字字符)之前的字符串为整型数据~于是按照整型数据的方式转化存储到我们的接收变量中~并将缓冲区中的已转化数据推出,但回车符保留。
如果是%c,则不会这样处理~而是读取缓冲区中的第一个字符,将它的ASCII码存储在变量中,同时,将该字符从缓冲区中推出~
如果是%s,则将缓冲区中回车键之前的每一个字符的ASCII码~对应存储到提供的变量首地址开始的逐渐加一的地址中,并将缓冲区中已经被识别的字符推出缓冲区。(注,scanf函数不会处理回车符~而是将其留在缓冲区中。)

大致的情况是这样的~
因此~才会出现字符可以一个一个自动识别~而整型数据~却不能~(当然,这也便于理解录入的数据从哪里停止~)

 

又看到一点。链接:https://blog.csdn.net/cxzq2010/article/details/79060002

debug版本的程序,为什么比release版本的大?因为debug版的程序里多了一个.debug段,这个段里存放了调试信息,调试信息运行时用不到,但是在调试时很有用,通常比较庞大,所以debug版的软件比release版的大很多。即便如此,居然还可以用某个工具软件去除掉.debug段。
以前没想过可执行文件具有结构,只是意识到它是一堆二进制码的集合,想不到可执行文件居然有很多段,而且还有个文件头。以前自学微机原理的时候,知道程序是放在不同段里的,有代码段,数据段等,一直不太明白什么意思,直到现在终于明白。
可执行文件虽然不能用普通的文本编辑工具查看,然而却有专门的工具查看里面的大体内容。比如各个段的大小等。
终于弄懂了缓存+虚拟地址控件的原理,CPU读的是虚拟地址,用MMU翻译成物理地址,这个物理地址是指内存(主存)内的地址,而不是磁盘的里的物理地址。内存里也不是一个时刻只有一个进程的代码页,而是可能有很多个进程的代码页。一旦有缺页错误,那么就会从磁盘中找到缺的页,换入到主存中。
 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值