gpt4 book ai didi

delphi - 分配一种类型的指针并将其作为不同类型但大小相同的指针进行处理可以吗?

转载 作者:行者123 更新时间:2023-12-03 15:10:06 28 4
gpt4 key购买 nike

可以分配一种类型的指针并将其处理为不同类型但大小相同吗?我的意思是这样的:

procedure TForm1.Button1Click(Sender: TObject);
var A:PInt64; // 64bit
P:Pointer;
B:PDouble; // 64bit
begin
New(A);
P:=A;
B:=P;
Dispose(B);
end;

假设我只想要 8、16、32、64 位有符号和无符号类型。还好吗?

最佳答案

如果指向的类型不是托管类型,那么这是安全的。就您而言, Int64Double 都不是托管类型,因此这是安全的。

托管类型的示例是字符串、接口(interface)、变体、匿名过程/方法、包含托管类型的记录等。

当您在托管类型上使用 NewDispose 时,必须初始化并最终确定该对象。当您在非托管类型上使用 NewDispose 时,相当于调用 GetMemFreeMem

事实上,您不需要所指向的类型具有相同的大小。当调用 FreeMem 时,不会传递类型的大小。所指向的内存具有每个 block 的元数据,允许它释放整个 block 。

关于delphi - 分配一种类型的指针并将其作为不同类型但大小相同的指针进行处理可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31440123/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com