2011-12-18 8 views
1

У меня возникли трудности с созданием динамической таблицы SDL_Surface. Взгляните на этот код:Недопустимая динамическая таблица 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

Попробуйте это:

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 ; 
+0

Это сделало трюк для меня, спасибо! –

1

SDL_Surface не должны быть выделены с помощью new, но с использованием функции от SDL API (например SDL_CreateRGBSurface, SDL_ConvertSurface ...), который будет выделять его и инициализировать ее должным образом.

Если проблема о способе Visual Studio отладчик отображает динамически выделенные массивы, вы должны смотреть на этот вопрос: How to display a dynamically allocated array in the Visual Studio debugger?

+0

Хорошо, я установил ее. Позже я отправлю решение. Спасибо! –

Смежные вопросы