arrays - 数组值不递增
问题描述
我正在编写代码,我希望这能引起我的问题。任何帮助表示赞赏>
我通过以下方式创建了一个数组:
intermediateBinCounts = (int *)malloc(bin_count * thread_count * sizeof(int));
并希望它在另一个函数中增加值:
for(int i=privateStartingIndex; i<privateEndingIndex; i++){
int returnedBinIndex = findBin(data[i]);
int intermBinCountIndex = (threadIndex*bin_count)+returnedBinIndex;
intermediateBinCounts[intermBinCountIndex]++;
printf("\nthis is value %d\n", intermediateBinCounts[intermBinCountIndex]);
}
intertermBinCountIndex 是从函数返回的整数,在我的情况下它们的值仅在 0、1、2、3 之间。
但我的 printf 正在返回:
this is value -1163005938
this is value -1163005937
this is value -1163005938
我不知道我的问题是否能够阐明我的问题,如果它不能请让我知道,以便我可以最好地再次编辑它。
我希望将intermediateBinCounts 初始化为零并增加该索引处的值,该值是从函数调用(即findBin)返回的。
解决方案
我希望
intermediateBinCounts
将其初始化为零
好吧,你不想要那个。intermediateBinCounts
是一个指针,您希望将其设置为malloc
.
您要设置为零的是intermediateBinCounts
指向的内存!
您可以在 - 之后使用一个简单的循环,malloc
例如:
int * intermediateBinCounts = malloc(bin_count * thread_count * sizeof(int));
for (int i=0; i < bin_count * thread_count; ++i)
{
intermediateBinCounts[i] = 0;
}
或使用calloc
而不是malloc
零calloc
初始化分配的内存:
int* intermediateBinCounts = calloc(bin_count * thread_count, sizeof(int));
推荐阅读
- android - DexProtector 的 getVariantManager 错误
- docker - Containerd:将文件从 containerd 容器复制到主机
- continuous-integration - 有没有办法在不同文件中重用 GitHub Actions 作业(例如运行测试)而不重新定义它们?
- javascript - 如何在挂载的函数中调用方法的函数
- javascript - 未捕获的类型错误:无法读取未定义的属性“下一个”
- google-bigquery - BigQuery 到 BigQuery 数据流
- laravel - Laravel 没有执行预定的命令
- c++ - 32位应用程序运行64位注册表(带有WOW6432Node)
- c++ - 检查向量是否包含已输入值的对象
- python - Python:遍历字符串中的 unicode 字符