繁体   English   中英

如何修复 c6385?

[英]How can I fix c6385?

    // Take last element from deck and add to dealer's hand
    // Update current elements after
    //Ensure the deck still has cards
    if (deck.currentElements == 0) {
        getNewDeck(deck);
        shuffleDeck(deck);
    }
    deck.currentElements -= 1;
    dealerCards.currentElements += 1;
    dealerCards.Cards[dealerCards.currentElements] = deck.Cards[deck.currentElements];

    // Update the deck array by decreasing size 
    // hence used cards are removed
    Card* temp = deck.Cards;
    deck.Cards = new Card[deck.currentElements];
    for (int i = 0; i < deck.currentElements; i++) {

        deck.Cards[i] = temp[i];
    }
    // Delete memory associated with temp
    delete[] temp;

嗨,我在“deck.Cards[i] = temp[i];”上收到以下错误:C6385 从“deck.cards”读取无效数据:可读大小为“(无符号整数)*64+4 字节” ,但可以使用“128 字节”。

我做错了什么,我该如何解决这个问题? 当我添加在顶部看到的 if 语句时,问题出现了。 有没有可能这只是一个错误的警告? 我正在使用视觉工作室

dealerCards.Cards[dealerCards.currentElements]不会分配给dealerCards.Cards[0] 会有一个洞。

--deck.currentElements;
dealerCards.Cards[dealerCards.currentElements] = deck.Cards[deck.currentElements];
++dealerCards.currentElements;

这假定有效索引位于 0.. (currentElements-1) 中。

然而,错误在deck ,但可能在其他地方的代码非常相似。

由于 C 级别代码非常基本(数组)并且容易出错,因此最好切换到更高的类型,例如vector

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM