|
|
1
3
我觉得你有点困惑。 首先,回想一下德尔菲 dynamic arrays 是引用类型( 没有 写时复制(COW)语义)。动态数组变量的值是指向 dynamic array heap object . 所以,如果你有
然后
因此,如果你尝试类似的东西
您将获得相同的地址(此处:02E62D48)。
现在,如果你打电话来
然后
例如,如果我重做我的
现在,你的代码
做一些不同的事情。在这里,
因此,从
打电话
因此,
为了看到这一点,例如,
例如,
但如果你访问
所以打电话
无法保证堆对象 不会 更改地址。如果堆对象最初的引用计数>1,那么 将 获取一个新地址。一般来说,预计地址会更改。
它总是这样。
在现代Delphi中,指针很少是“正确”的方法,除非你是一名从事相当高级工作的专家开发人员。
我不知道你的背景,但也许你最好买一辆现代车
|
|
|
2
2
这是不正确的。你指的是
如果你指向实际的数组,那么你就会遇到你描述的问题,例如:
不幸的是,是的。如果新数组大小小于或等于当前数组大小,RTL不够智能,无法避免重新分配。
在你的例子中,它已经做到了。 |
|
zeus · 如何在调整数组大小后保持指向动态数组的指针有效? 10 月前 |
|
Wolfgang Bures · 如何解决idHTTP中的错误10054 11 月前 |
|
|
IceCold · 由于TStyleManager,消息丢失。尝试设置样式 11 月前 |
|
|
SignalOne · 德尔福(FMX)循环参考 1 年前 |
|
|
Sascha Ott · 如何从线程调用线程的方法? 1 年前 |
|
|
user1580348 · 问题:如何在上次最小化后还原应用程序? 1 年前 |
|
tua · Delphi的TLinkLabel坏了吗? 1 年前 |
|
|
Frank.Wu · delphi:RGB到HSL不正确 1 年前 |