Delphi 什么是「;“真正的”;动态数组占用的内存大小? 例子: 问题:
内存中占用的AText的实际大小是多少?是它长度的7+基数大小,即7+4=11字节吗?加上4字节引用计数。当然还有heapmanager开销(这取决于delphi版本并使用内存管理器,内存管理器很容易达到12-16字节) 这意味着:Delphi 什么是「;“真正的”;动态数组占用的内存大小? 例子: 问题:,delphi,Delphi,内存中占用的AText的实际大小是多少?是它长度的7+基数大小,即7+4=11字节吗?加上4字节引用计数。当然还有heapmanager开销(这取决于delphi版本并使用内存管理器,内存管理器很容易达到12-16字节) 这意味着: sizeof(元素)*元素计数 sizeof(参考计数) 当前实现:sizeof(整数)=4 sizeof(元素编号) FPC实际上存储最高的元素,而不是elementcount。(不了解德尔福) 当前实现:sizeof(整数)=4 堆开销。 至少是为整
- sizeof(元素)*元素计数
- sizeof(参考计数)
- 当前实现:sizeof(整数)=4
- sizeof(元素编号)
- FPC实际上存储最高的元素,而不是elementcount。(不了解德尔福)
- 当前实现:sizeof(整数)=4
- 堆开销。
- 至少是为整个块分配的大小李>
- 可能还有一个或两个指针(下一个块)。但这取决于内存管理器
- 许多内存管理器的最小块大小为16或32李>
数组[0..7]如何?@Astaroth:您应该将其作为一个单独的问题。在sizeof(Char)=1
的版本中,仅将8个字节内联到包含类型中。没有额外的堆分配。Marco,为什么不:加上8个字节?(4字节引用计数和4字节长度)?@Jeroen,好的,我将发布另一个问题。
procedure Test;
var
AText: array of AnsiChar;
begin
SetLength(AText, 7);
end;