SDL_Surface的动态表无效

时间:2011-12-18 12:48:31

标签: c++ sdl

我在创建SDL_Surface的动态表时遇到了困难。 看看那段代码:

SDL_Surface **testA = new SDL_Surface *[2];
for(int i=0;i<2;i++)
    testA[i] = new SDL_Surface;
SDL_Surface* testB[2];

就我而言,TestA和textB看起来应该完全相同。但Visual Studio本地人看起来像这样: image

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

试试这个:

    int size=2;
    SDL_Surface** testA ; 
    testA  = new SDL_Surface*[size];  

    for (int i = 0; i < size; i++) 
    { 
      surface[i] = NULL; //  here, surface[i] is the kth pointer, not an SDL_Surface 
   // surface[i] = SDL_CreateRGBSurface ( /* set your parameters */ );
    } 


    // Of course, somewhere later in the code, you'll need to free the memory ... 
    for (i = 0; i < size; i++) 
    { 
    SDL_FreeSurface(testA [i]); 
    testA [i] = NULL; 
    } 

    delete testA ; 

答案 1 :(得分:1)

不应使用SDL_Surface分配

new,而是使用SDL API中的函数(例如SDL_CreateRGBSurfaceSDL_ConvertSurface ...)来分配它和正确地初始化它。

如果问题与Visual Studio调试器显示动态分配的数组的方式有关,那么您应该看一下这个问题:How to display a dynamically allocated array in the Visual Studio debugger?