Advertisement

C++中的free和delete操作频繁出现可能导致程序错误

阅读量:

多次free和delete将会导致错误:

指针变量本质上也是一个变量对象,在内存中占据一定的存储空间。在编程过程中,我们可以通过为该指针变量分配新的内存地址来实现数据的操作与传递功能。若未对指针变量进行赋值操作,则编译器会报错。因此,在程序设计中必须确保所有引用的指针均经过初始化处理后才能被有效利用。通过delete和new关键字的操作,在堆内存中为指定对象分配了一段新的存储空间,并将其首地址作为相应的指针变量引用。

每当释放一个指针时free函数仅会清除该指针指向的那一块内存空间**...而不会影响其栈中保留着原来的指向...**这一现象可能会导致一些混淆因此在实际操作中必须谨慎处理手动分配的空间必须及时释放否则可能导致内存泄漏等问题严重时甚至影响程序的正常运行为了避免这种误区建议在编写相关代码时严格按照语法规则进行操作尤其是在涉及资源管理的领域更加注重细节

内存块被回收后可用作其他指针变量的目标地址域;回收后该区域的内存值并非必然是空值域;因此,在free之后不宜通过检查是否为空来决定后续操作

  • delete:当一个 ptr 被 destroy 后(不再指向任何内存空间),这个 ptr 就成为了无家可归的 ptr(wild ptr)。这种情况下(即该对象不再合法指向内存),我们称其为 ptr(野 ptr)。当再次 attempt destroy

全部评论 (0)

还没有任何评论哟~