我是sdl的新手。我正在制作二十一点游戏。我想制作一系列纹理。我想知道是否有人可以帮助我。这是我一直在尝试做的事情:
// array of textures for the extra player cards
SDL_Texture *hitCardsText[] = { NULL };
// this does not give me errors but i dont know if it is right
hitCardsText[0] = loadTexture(ren, cards[dynamicPlayerCards[0]]);
hitCardsText[1] = loadTexture(ren, cards[dynamicPlayerCards[1]]);
// i get an error here
SDL_DestroyTexture(hitCardsText[0]);
SDL_DestroyTexture(hitCardsText[1]);
我在代码中上面指示的位置收到此错误(我的文件称为introSDL.exe btw):
introSDL.exe中0x6C78CE9A(SDL2.dll)的未处理异常:0xC0000005:访问冲突读取位置0x00000050。
最佳答案
您正在写数组的边界。
SDL_Texture *hitCardsText[] = { NULL };
那只有1个元素。如果您还不希望这样做,则需要在初始化列表中添加更多元素,或者在方括号中指定确切的数量。
如果要动态调整大小的数组,请使用
std::vector
。std::vector<SDL_Texture*> hitCardsText;
hitCardsText.push_back(loadTexture(ren, cards[dynamicPlayerCards[0]]));
hitCardsText.push_back(loadTexture(ren, cards[dynamicPlayerCards[1]]));