Странно получается не работает, а sprintf с целыми числами и строками работает.
Код
dynamic_array = malloc(100 * sizeof(float));
if(!dynamic_array)
{sprintf(&BufLcdBot[0],"%s","malloc ne rabotaet");
LCD_Print(&BufLcdBot[0],24,0x40, FLAGCSRTYPE_CSRNO_BLINKNO);
}else{
sprintf(&BufLcdBot[0],"%s","malloc rabotaet");
LCD_Print(&BufLcdBot[0],24,0x40, FLAGCSRTYPE_CSRNO_BLINKNO);
}
free(dynamic_array);
dynamic_array = NULL;
Вот функция sbrk может она неправильный адрес возвращает, как проверить,уже не знаю ?
Код
caddr_t _sbrk(int incr)
{
caddr_t prevHeap;
caddr_t nextHeap;
if (heap == NULL)
{ // first allocation
heap = (caddr_t) & _heap;
}
prevHeap = heap;
// Always return data aligned on a 8 byte boundary
nextHeap = (caddr_t) (((unsigned int) (heap + incr) + 7) & ~7);
// Check enough space and there is no collision with stack coming the other way
// if stack is above start of heap
if (nextHeap >= (caddr_t) & _eheap)
{
errno = ENOMEM;
return NULL; // error - no more memory
}
else
{
heap = nextHeap;
return (caddr_t) prevHeap;
}
}