47、C/C++编程中的内存管理、循环优化与结构使用技巧

C/C++编程中的内存管理、循环优化与结构使用技巧

1. Oracle RDBMS与简单垃圾回收器

曾经有人尝试深入了解Oracle RDBMS,查找其漏洞等。Oracle RDBMS是一款庞大的软件,典型函数可能会接受非常大的嵌套对象作为参数。为了深入分析,作者想将这些对象以树或图的形式转储出来。

操作步骤

  1. 跟踪内存分配与释放 :通过拦截内存分配和释放函数,跟踪所有内存分配和释放操作。当被拦截的函数获取到内存块的指针时,在已分配的内存块列表中查找该块,并获取其大小和简短名称,类似于Windows操作系统内核中的“标记”操作。
  2. 扫描内存块 :对于给定的内存块,在32位操作系统上扫描32位字,在64位操作系统上扫描64位字。每个字都可能是指向另一个内存块的指针,如果是,则递归处理该块。
  3. 生成图表 :使用GraphViz渲染这些图表。

虽然作者没有关于所有这些结构的数据类型的信息,但仍能从中获取一些有用的信息。

垃圾回收器Boehm GC

在C/C++中,如果使用一个在内存中分配的块,其地址必须以某种形式存在,比如在另一个已分配块的某个结构/数组中作为指针,或者在全局分配的结构中,或者在栈中的局部变量中。如果没有指向某个块的指针,就可以称其为“孤儿块”,这会导致内存泄漏。

Boehm GC的工作原理如下:
1. 扫描内存块 :它会扫描所有已分配的内存块,查找指针。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值