小编com*_*fan的帖子

那么大部分二进制文件都是由reloc表组成的?

我只是用来objdump -x ...检查PE文件的各个部分.

大约有90,000行reloc条目:

reloc   92 offset  bc0 [524bc0] HIGHLOW
reloc   93 offset  bc4 [524bc4] HIGHLOW
    ....
Run Code Online (Sandbox Code Playgroud)

大多数PE文件的大部分空间是否都是由上面的reloc条目组成的?

那些条目是什么?

UPDATE

任何人都可以解释重定位条目如何像上面那样工作?

relocation portable-executable

2
推荐指数
1
解决办法
2025
查看次数

什么时候匿名数组/哈希会在perl中被垃圾收集?

我知道perl无法检测到递归引用:

$a = \$a;
Run Code Online (Sandbox Code Playgroud)

$a 在这种情况下永远不会被GC.

关于什么 :

@a = ({1,2,3}, [1,2,3]);
Run Code Online (Sandbox Code Playgroud)

是否会匿名{1,2,3}[1,2,3]@a超出范围时被收集?

如何证明是或否?

perl garbage-collection

2
推荐指数
1
解决办法
607
查看次数

给定一个对象,我怎么能在perl中知道它的类?

我需要这个信息来决定调用哪个具有特定方法的类.

perl

2
推荐指数
2
解决办法
112
查看次数

为什么 printf 在 Bash 中通过管道传输时不起作用?

我有一个 Bash 脚本,它从STDINwork.sh获取一些内容并将其回显到STDOUT

我还有一个 C 程序,return_input它也从STDIN和 printf 获取一些内容到STDOUT

但是当我这样链接它们时:

./work.sh |./return_input
Run Code Online (Sandbox Code Playgroud)

printfreturn_input在退出时输出到屏幕。为什么?

简化:

[root@ test]# cat work.sh
#!/bin/bash
for i in {1..5}
do
   echo test
   read
done
Run Code Online (Sandbox Code Playgroud)

的输出cat return_input.c

#include <stdio.h>

void return_input (void){
    char array[30];
    gets (array);
    printf("%s\n", array);
    printf("%#p\n", *(long *)(array+40));
}

main() {
    while(1 == 1)return_input();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c bash printf

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