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

C语言函数内访问全局变量输出结果与预期不符问题咨询

问题原因及修复方案

核心问题:全局变量赋值笔误

你在main函数中对测量边界变量赋值时出现了书写错误:

// 错误写法
max_meas = 20;
max_meas = 5;

这里连续两次对max_meas赋值,第一次写入的20被后续的5覆盖,而你期望设为5的min_meas全程没有被手动赋值。C语言中未手动初始化的全局变量默认值为0,因此min_meas取值为0,和你遇到的输出结果完全吻合。

其他潜在问题

你代码中还存在内存分配参数不匹配的隐患,后续运行极易出现内存越界崩溃:

  • bin_counts是int类型数组,分配内存时误用了sizeof(float),需要修正为sizeof(int)
  • bin_maxes对应bin_count个分桶的最大值,分配内存时误用了data_count作为元素个数,需要修正为bin_count

修正后的核心代码片段

// main函数内赋值修正
max_meas = 20;
min_meas = 5;

// 内存分配修正
data = (float *)malloc(data_count * sizeof(float));
bin_counts = (int *)malloc(bin_count * sizeof(int));
bin_maxes = (float *)malloc(bin_count * sizeof(float));
intermediateBinCounts = (int *)malloc(bin_count * thread_count * sizeof(int));

修正后调用generateData即可输出你预期的20.00000、5.00000。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:54:01