I want to write a method in C that gives me a multidimensional array of uint16_t
.
I write this:
uint16_t ** GRAPHICS_CreateImage(int width, int height)
{
int x;
uint16_t **image = (uint16_t **)malloc(width * sizeof(uint16_t *));
for(x=0; x < width; x++)
{
GUI_DUMY(x * 5, 0, 0x00F0);
uint16_t *xx = (uint16_t *)malloc(height * sizeof(uint16_t));
if(xx == NULL)
{
GUI_DUMY(0, 30, 0x0000);
}
GUI_DUMY(x * 5, 10, 0x000F);
image[x] = xx;
GUI_DUMY(x * 5, 20, 0xF000);
}
GUI_DUMY(0, 100, 0x0000);
return image;
}
The program runs on an LCD-Display (I cannot debug code) and I need to do GUI_DUMY to see squares on the screen.
So... my problem is that the malloc
in the for
hangs when x == 55. (I run the method with width 480 and height 320.)
When I have not enough memory, the malloc has to be finished and xx has to be NULL.
But xx is never NULL.
I have read, this problem can arise because of buffer overflow when mallocing, but I don't know if that is my problem?