pointers - @H 和 @H[0] 之间的区别
问题描述
我有
var H: array of THandle;
然后在一个循环中创建多个线程,并将线程句柄分配给 H 的元素,然后等待它们。将@H[0] 作为第二个参数传递给下面的 WFMO 是可行的。
WaitForMultipleObjects(Length(H), @H[0], True, INFINITE) <-- Works
但是传递@H 如下失败并出现WAIT_FAILED。GetLastError 返回“无效句柄”。
WaitForMultipleObjects(Length(H), @H, True, INFINITE) <--- Fails.
为什么 @H 与 @H[0] 不同?
解决方案
- 因为它是一个动态数组,
H
已经是一个指针并且它指向第一个元素,所以 @H[0]
与H
- 指向第一个元素的指针相同- 现在
@H
等于@@H[0]
- 指向第一个元素的指针。
推荐阅读
- javascript - then方法中的代码不执行,进行错误处理
- arrays - 我相信我做了一个无限循环,但我不知道它是在哪里创建的
- python - 在模板中收到来自 Ajax 的发布请求后,Flask 无法重定向
- mysql - 数据库需要重复值作为主键(不允许使用哪个)?
- html - 如何将我的“记住我”复选框与中心对齐?
- hadoop - HBase wal 越来越大
- c++ - 限制第一人称相机的俯仰旋转c ++ ue4
- node.js - 除非节点版本不同,否则节点应用程序无法在端口 80 上启动
- reactjs - onChange 时 React Select 不触发
- assembly - 如何将结果总和值存储到内存 RISC-V