[英]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.