关于无效内存的引用

huangzhtao 2007-10-21 04:48:50
我在学C语言时,使用指针时遇上了无效内存引用的问题,不知道有没有一种软件或者编译器之类的能够方便我在调试过程中及时发现无效内存引用的地址。
...全文
807 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangzhtao 2007-10-28
  • 打赏
  • 举报
回复
感谢两位为我解答了这一问题,看来重要的还是需要自身的修炼上.
iu_81 2007-10-22
  • 打赏
  • 举报
回复
CLR对程序员影响最大的就是它的内存管理功能,以至于我们很有必要单独把它列出来阐述。它为应用程序提供了高性能的垃圾收集环境。垃圾收集器自动追踪应用程序操作的对象,程序员再也用不着和复杂的内存管理打交道。这在某些喜欢张口闭口底层编程的所谓的高手来说,自动内存管理从来都是他们嘲笑的对象。的确,为通用软件环境设计的自动化内存管理器永远都抵不上自己为特定程序量身订制的手工制作。但现代软件业早已不再是几百行代码的作坊作业,动辄成千上万行的代码,大量的商业逻辑凸现的已不再是算法的灵巧,而是可管理性,可维护性的工程代码。.NET/C#不是为那样的作坊高手准备的,C语言才是他们的尤物。在Microsoft.NET托管环境下,CLR负责处理对象的内存布局,管理对象的引用,释放系统不再使用的内存(自动垃圾收集)。这从根本上解决了长期以来困扰软件的内存泄漏和无效内存引用问题,大大减轻了程序员的开发负担,提高了程序的健壮性。实际上我们在托管环境下根本找不到关于内存操作或释放的语言指令。值得指出的是Microsoft.NET应用程序可以使用托管数据,也可以使用非托管数据,但CLR并不能判断托管数据与非托管数据。

danteliujie 2007-10-22
  • 打赏
  • 举报
回复


好问题,这的确是个历来受到很高重视的问题。
所以一些高级语言里面可以对未赋值的变量提出警告的功能。
操作系统也提供各种模式和权限来限制,比如系统模式和客户模式等,比如每个进程的地址空间的实现方式。
还有很多优秀的程序员提出这个问题还感到不满意的,自己编写一些软件来做这些检查。
当然,软件大大们通常要求我们不要把检查代码的希望放在外在软件上,而要坚持多方在程序员的自我修炼和软件工程师的慎密设计以及系统程序员的框架把握上。
有这样的意识很不错!

70,032

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧