You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++ Builder中动态数组与静态数组计数结果不一致问题求助

问题原因

核心问题是动态数组未初始化:
你使用静态数组时写了unsigned __int64 point_count[n] = {0};,这行代码会自动把数组所有元素初始化为0。但DynamicArray仅设置长度时,不会自动初始化元素,数组内的初始值是内存残留的随机垃圾值,后续累加计数是在垃圾值的基础上叠加,最终结果自然和静态数组不一致。


解决方法

设置完point_count的长度后,手动将所有元素初始化为0即可,两种常用实现方式:

  1. 循环初始化
DynamicArray<unsigned __int64> point_count;
point_count.Length = n;
// 手动初始化所有元素为0
for (int i = 0; i < n; i++) {
    point_count[i] = 0;
}
  1. 内存清零函数批量处理
DynamicArray<unsigned __int64> point_count;
point_count.Length = n;
ZeroMemory(&point_count[0], sizeof(unsigned __int64) * n);

另外请确认DynamicArray<HRGN>类型的region数组的赋值逻辑和静态数组版本保持一致,不要遗漏每个元素调用CreatePolygonRgn的步骤。


内容的提问来源于stack exchange,提问作者Vorrven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:45:03