我目前正在学习使用C语言的CS课程.我的教科书似乎暗示指针变量仍保留以前分配给它的内存地址,即使在调用free()之后 - 假设我以前使用过malloc( ).这是否意味着当调用malloc()时,内存的某些部分会被"锁定",因此我的指针数据保持不变?什么阻止其他进程 - 比如谷歌浏览器或某些应用程序 - 搞乱我的变量?我可以轻松地在无效索引处为数组赋值,从而导致事情中断.我也可以不正确地访问内存,再次使用无效索引的数组,给我垃圾,或者,如果我真的很幸运,给我一个有意义的值.什么阻止计算机陷入混乱!
我正在编写一个程序来逐行读取文件。我知道 fgets() 会一直读到新行、n-1 个字符或 EOF。让我困惑的是 fgets() 如何知道前进到新行/它在文件中的位置?
更清楚地说,我知道在 Java 中您必须明确告诉扫描仪读取下一行。但是在 C 中,我只是将 fgets() 放在一个 while 循环中,并且相信它可以完成它的工作。
我怎样才能在逻辑上让自己放心 fgets() 实际上正在前进到下一行,而不是在那个 while 循环中一遍又一遍地阅读同一行(是的,我知道我可以打印出来)?