在我的分拣程序中打印溢出或垃圾值

问题描述 投票:-1回答:1

我有一个函数,它接受一个指向int数组的指针。该数组由6个随机数组成,范围从1-6(骰子游戏)。我的函数应该按升序对数字进行排序。我可以运行我的代码,它的工作原理,然后我可以再次运行它,我得到垃圾和溢出吐出的排序输出。我无法确定我的逻辑错误的位置,任何帮助将不胜感激。

    bool farkle_check(int* dice_roll){
148 //      int farkle1[] = {2, 2, 3, 3, 4, 6}, farkle2[] = {2, 2, 3, 4, 4, 6}, farkle3[] = {2, 3, 4, 4, 6, 6};
149         int idk = 0;
150         cout << "before sorting is\n";
151         for(int j = 0; j < 6; j++){
152                 cout << dice_roll[j];
153         }
154         cout << endl;
155         for(int i = 0; i < 6; i++){
156                 for(int j = 0; j < 6-i; j++){
157                         if(dice_roll[j] > dice_roll[j+1]){
158                               idk = dice_roll[j];
159                               dice_roll[j] = dice_roll[j+1];
160                               dice_roll[j+1] = idk;
161                               }
162                 }
163         }
164         cout << "after sorting\n";
165         for(int j = 0; j < 6; j++){
166                 cout << dice_roll[j];
167         }
168
169         cout << endl;

这是我的样本运行,你会注意到程序按第一次运行的方式工作,但第二次运行则没有。在绿色下划线运行中,还值得注意的是,输出的最后5个数字确实是我的原始随机数中的5个并且它们被排序。不知道第一个随机垃圾数量的原因是什么。

enter image description here

c++ sorting
1个回答
0
投票

你正面临着名的'索引出界'错误。您的排序循环超出了数组范围,导致读/写违规。简而言之,检查数组边界并确保您没有违反任何内存地址。

© www.soinside.com 2019 - 2024. All rights reserved.