如何强制delphi编译器为未使用的变量分配内存

时间:2017-02-19 01:13:45

标签: delphi variables memory allocation

我意识到(艰难的,一小时的调试)我的Delphi 2010编译器优化关闭(和1字节的记录对齐)不为未使用的变量分配内存。如果定义如下:

var x,y,z:longint; a1,a2,a3:whatever;

和y未使用(实际上,我暂时从项目中删除了一个表单,它独占引用该变量),然后为z分配了地址x + 4。很好,除了我有很多代码,现在将z与a1混合。这可以通过某些开关来控制吗?谢谢。

1 个答案:

答案 0 :(得分:4)

这不会奏效。编译器将优化所有未使用的变量。

您可以做的是定义打包记录,如下:

type
  TMyData = packed record
    x,y,z: longing;
    a1,a2,a3: whatever;
  end;

然后,分配的TMyData将始终作为一个分配,包括所有内部变量,即使它们未在您的代码中使用。

对于在堆栈上分配的临时变量,您可以使用:

function DoSomething();
var loc: packed record
      x,y,z: longing;
      a1,a2,a3: whatever;
    end;
begin
  loc.x := 10;
  ...