小编Ira*_*ter的帖子

Delphi动态数组包含哪些簿记数据?

这是一个检查内存分配的简单程序.使用任务管理器检查值之前和之后建议每个动态数组占用大小为1的20字节内存.元素大小为4,这意味着簿记数据的开销为16字节.

从查看system.pas,我可以找到一个-4字节的数组长度字段,以及-8字节的引用计数,但我似乎找不到任何对其他的引用8.任何人都知道他们做了什么?

示例程序:

program Project1;

{$APPTYPE CONSOLE}

type
   TDynArray = array of integer;
   TLotsOfArrays = array[1..1000000] of TDynArray;
   PLotsOfArrays = ^TLotsOfArrays;

procedure allocateArrays;
var
   arrays: PLotsOfArrays;
   i: integer;
begin
   new(arrays);
   for I := 1 to 1000000 do
      setLength(arrays^[i], 1);
end;

begin
  readln;
  allocateArrays;
  readln;
end.
Run Code Online (Sandbox Code Playgroud)

delphi overhead dynamic-arrays data-structures

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

谁叫这个功能?

在我的上一份工作(遗留FORTRAN 77代码)中,我们有交叉引用文件列出了哪些子程序称为其他子程序,在哪些文件子程序中定义,哪些公共块包含哪些变量,哪些子程序包含哪些公共块等等.然后由shell脚本使用,它们会对交叉引用文件进行grepped,并会告诉您有关程序设计的信息.

我现在在一家新公司(C++代码),我发现ctags取代了一些功能.我最想念的一件事是我们称之为"who.calls"的命令,它列出了哪些子程序(我的意思是函数或方法,必须习惯于OO说)调用给定的子程序.例如,如果子例程foo调用子例程bar:

>who.calls bar
foo
Run Code Online (Sandbox Code Playgroud)

如果没有从我的旧公司重新设计编程环境,有关如何执行此操作的任何建议?我正在寻找一个超级正则表达式或其他方法,我可以在命令行使用,但我愿意接受其他方法,采取一些完全不同的方法来给我相同的信息.我基本上想要在不运行调试器的情况下发现调试函数堆栈.

shell ctags code-search-engine

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

需要元编程魔术来以无错误的方式定义位字段的母体

目标是控制允许哪些类型的用户在UI级别执行哪些操作.这段代码已经存在了一段时间; 我只想稍微改进一下.我试图改进的文件可能应该是自动生成的,但是这个变化太大了,所以我寻求一个更简单的解决方案.

我们将调用的文件PermissionBits.h有一堆这样的:

// Here names are mangled; for example XYZ_OP_A is:
// permission to operation A in category/context XYZ
// SCU64 = static const unsigned __int64
// Some namespaces utilize all 64 bits
// The actual values (as long as they are proper bit fields) 
// do not matter - they are always used by name
namespace XYZPermissionBits
{
    SCU64 XYZ_OP_A = 1UI64 <<  0; //    1 = 0x0000000000000001
    SCU64 XYZ_OP_B = 1UI64 <<  1; //    2 …
Run Code Online (Sandbox Code Playgroud)

c++ macros metaprogramming bit-fields

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

从单个列表中循环遍历多个变量

我正在尝试创建一个这样的循环

newList = [a + b for a,b in list[::2], list[1::2]]
Run Code Online (Sandbox Code Playgroud)

意思是,从列表中取两个连续的条目,对它们执行某些操作并将其放入新的列表中.

那会怎么样?

python

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

如何检索 python 代码的控制流图?

我想转储给定 python 代码的控制流图,类似于 gcc 编译器选项给出的选项:用于 c 代码的 -fdump-tree-cfg 。

我成功获得了Python代码的AST(抽象语法树),但是从AST阶段获得控制流图似乎相当复杂和麻烦。

有没有更简单的方法来直接检索Python代码的控制流图?有什么建议么?

哦顺便说一下我正在使用 python3.5

谢谢你们!

PS我真的不知道我在幕后使用什么样的解释器,据我所知它是CPython(不确定),我不认为它是PyPy(Rpython)。有什么建议我如何验证吗?

python abstract-syntax-tree control-flow-graph

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

退出痛苦区 - NDepend

我刚刚通过NDepend运行我的一个项目,报告将我的组件放在痛苦区域的角落.我只是想知道这是否应该让我担心.

疼痛区真正意味着什么?这不是说有很多耦合,事情不容易改变.

我最近删除了很多接口并密封了很多类,因为我不希望用户扩展API(仅在某些地方).它是com对象的.NET包装器,因此用户不需要扩展任何东西.

有什么好办法让我走出痛苦的区域?

谢谢

.net code-analysis ndepend

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

IBM在PC上运行的RDZ如何访问大型机的文件系统?

我反复听说,虽然IBM大型机上提供了NFS风格的文件系统,但它们通常没有启用,大概是为了最大限度地降低大型机相对于世界其他地方的安全风险.

鉴于我想生产基于PC的工具来扩展和处理大型机上的文件,这使得一个简单的问题("打开NFS文件'\ mainframe\foo'")变得更加困难; 我可以依靠在网络环境中提供文件系统访问权限?(Linux系统通过Samba提供NFS非常标准,所以这很容易).

IBM提供Rational Developer for Z,这是IBM COBOL程序员使用的Eclipse变体.RDZ似乎可以直接访问IBM大型机文件系统.他们用它做什么?为什么我不能使用它,如果可以,它是什么?

filesystems security nfs mainframe

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

Java的SQL解析器库 - 检索SQL语句中存在的表名列表

我正在寻找一个SQL库,它将解析SQL语句并返回SQL语句的某种Object表示形式.我的主要目标实际上是能够解析SQL语句并检索SQL语句中存在的表名列表(包括子查询,联接和联合).

我正在寻找一个商业友好的许可证库(例如Apache许可证).我正在寻找一个库而不是SQL语法.我不想构建自己的解析器.

到目前为止我能找到的最好的是JSQLParser,他们给出的例子实际上非常接近我正在寻找的东西.然而,它无法解析太多好的查询(DB2数据库),我希望找到一个更可靠的库.

java sql parsing

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

访问返回类型的泛型参数

是否可以访问以下行中的泛型参数?

 public List<StoryLikeRef> getLikes() throws IOException
Run Code Online (Sandbox Code Playgroud)

我的意思是通过反射从返回类型获取StoryLikeRef?

谢谢

java reflection

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

Windows32 API:函数入口上的"mov edi,edi"?

我正在逐步完成Windows 7中的结构化错误处理恢复代码(例如,在SEH处理程序完成后会发生什么并传回"CONTINUE"代码).这是一个叫做的函数:

 7783BD9F  mov         edi,edi  
 7783BDA1  push        ebp 
 7783BDA2  mov         ebp,esp   
 7783BDA4  push        1  
 7783BDA6  push        dword ptr [ebp+0Ch]  
 7783BDA9  push        dword ptr [ebp+8]  
 7783BDAC  call        778692DF  
 7783BDB1  pop         ebp  
 7783BDB2  ret         8  
Run Code Online (Sandbox Code Playgroud)

我已经习惯了"push ebp/mov ebp,esp"的功能序言."mov edi,edi"的目的是什么?

windows seh calling-convention

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