我是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]]));

07-26 03:03