从数组中删除未使用的内存,使其不输出随机数

时间:2014-02-02 22:12:50

标签: c++ arrays string memory

void dealCard(int tds, int totaldeck[]) //take total deck divide it by two deal it to two player
{

    int ku=0; //ku is the increasing card number so for 1 you give it to p1 then 2 u give to p2
    int player1deck[tds/2];
    int player2deck[tds/2];
    int num =0;
    int num1=0;

    for (ku; ku < tds; ku++)
    {
        if (ku % 2 == 1) // every other card is given to playerdeck1
        {
            player1deck[num] = totaldeck[ku]; //totaldeck is the already shuffled complete deck
            num++;
            //cout << tds << endl;
        }
        else
        {
            player2deck[num1] = totaldeck[ku];
            num1++;
        }
    }
    cout << endl;
    for (int kookoo = 0; kookoo < ku; kookoo++)
    {
    cout << player1deck[kookoo] << endl;
    }
}  

我正在创建一个功能,可以向玩家1和玩家2处理半个已经洗过的牌。

我遇到的一个问题是,所有26个参数都在player1deck [num]中填满。输出变成随机数,如52,10201328,-208476711,0,1等。我认为计算机只是试图将内存分配给未填充的点,因为[ku]一直到tds(用户的甲板数量)玩* 52)和[num]只是其中的一半。反正有没有摆脱这个额外的记忆,所以我可以摆脱那些随机数?非常感谢您的任何帮助/建议

1 个答案:

答案 0 :(得分:1)

player1deck只包含26个元素,最后一个循环尝试访问前26个元素之外的元素。这是undefined behaviour

您需要像这样更改循环条件:

for (int kookoo = 0; kookoo < tds / 2; kookoo++)