我在创建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本地人看起来像这样:
我该如何解决这个问题?
答案 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_CreateRGBSurface
,SDL_ConvertSurface
...)来分配它和正确地初始化它。
如果问题与Visual Studio调试器显示动态分配的数组的方式有关,那么您应该看一下这个问题:How to display a dynamically allocated array in the Visual Studio debugger?