小编adi*_*one的帖子

GDB 可以帮助找出内存地址何时被释放吗?

GDB 可以跟踪内存地址何时被释放吗?在地址上放置 awatch没有帮助,因为当释放地址处的内存时它不会中断,而仅在触摸它时才中断。

我认为通过使用free(),仅释放指向内存的指针,但内容仍然可以存在,直到被另一个内存分配函数使用。

(gdb) p (char *)0xee20229c
$2 = 0xee20229c "XYZ"
(gdb) watch *(char *)0xee20229c
Hardware watchpoint 3: *(char *) 3995083420
(gdb) c
Continuing.
...
...
Hardware watchpoint 3: *(char *) 3995083420

Old value = 88 'X'    // Changes only when the contents are overwritten,
New value = 0 '\0'    // but not when the memory location '0xee20229c' is freed.
Run Code Online (Sandbox Code Playgroud)

c gdb

5
推荐指数
1
解决办法
4601
查看次数

GDB 是否正确解释内存地址?

我正在使用 GDB 检查内存地址的内容,但不知道它是否正确显示。

(gdb) p (char *)0x8182f40
 $4 = 0x8182f40 "XYZ"
(gdb)


(gdb) x/40x 0x8182f40-16
0x8182f30:      0x00000000      0x00000000      0x000000a8      0x00000010
0x8182f40:      0x005a5958      0x00000000      0x00000000      0x00000029
0x8182f50:      0x00000000      0x00000000      0x00010000      0x082439d8
0x8182f60:      0x08199100      0x00000000      0x08000000      0x00002f08
0x8182f70:      0x00000002      0x000000b1      0x00000000      0x00000000
0x8182f80:      0x00000000      0x00000000      0x00000000      0x00000000
0x8182f90:      0x00000000      0x00000000      0x000000d4      0x00000002
0x8182fa0:      0x000003f1      0x00007162      0x00000002      0x08178d00
0x8182fb0:      0x00000000      0x080ef4b8      0x00000000      0x00000000
0x8182fc0:      0x00000000      0x00000000      0x0000021d      0x00000000
Run Code Online (Sandbox Code Playgroud)

上面的内容0x8182f40显示为0x005a5958,但这看起来是相反的。那是对的吗?

现在按字节打印,我得到这个:

(gdb) x/40bx 0x8182f40-16
0x8182f30:      0x00    0x00    0x00    0x00    0x00 …
Run Code Online (Sandbox Code Playgroud)

c gdb endianness

4
推荐指数
1
解决办法
997
查看次数

perl中的日期转换

我正在使用perl来访问我从DD-MON-YYYY格式获取日期的数据库.我需要执行2个操作:

  1. 将此格式转换为MM/DD/YYYY格式.
  2. 将此日期与两个日期进行比较,以查看它是否位于该时间范围内.

    我的$ chdate = '15 -Feb-2013';

    sub get_stats {

    my %map = ( 'Jan' => '01', 'Feb' => '02', 'Mar' => '03', 'Apr' => '04',
                'May' => '05', 'Jun' => '06', 'Jul' => '07', 'Aug' => '08',
                'Sep' => '09', 'Oct' => '10', 'Nov' => '11', 'Dec' => '12');
    
        $chdate =~ s/(..)-(...)-(....)/$map{$2}\/$1\/$3/;
        print "New date: $chdate";
    
    Run Code Online (Sandbox Code Playgroud)

    }

我如何执行(2)操作?

我有一个旧版本的Perl(没有Time :: Piece模块),我没有权限更新:)

perl perl-module

0
推荐指数
1
解决办法
8686
查看次数

标签 统计

c ×2

gdb ×2

endianness ×1

perl ×1

perl-module ×1