This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Problem with malloc

Hi,

I need to create a dynamic array to send a different number of bytes of data using TWI.
Here is how I create an array:

void twi_Eeprom_Write(uint8_t *pBuffer, uint32_t WriteAddr, uint32_t NumBytesWritten)
{
  ret_code_t err_code;
  uint8_t SendAddr = 0;
  uint8_t *reg;
  reg = (uint8_t *)malloc((NumBytesWritten+2) * sizeof(uint8_t));
   
  SendAddr = ((EEPROM_ADDR & 0xFC) | ((uint8_t)(WriteAddr >> 15) & 0x02));//A0 - write
  reg[0] = (uint8_t)(((WriteAddr) & 0xFF00) >> 8);
  reg[1] = (uint8_t)((WriteAddr) & 0x00FF);
  for (uint8_t i = 0; i < NumBytesWritten; i++)
  {
    reg[i+2] = pBuffer[i];
  }
  
  err_code = nrf_drv_twi_tx(&m_twi_eeprom, SendAddr, reg, sizeof(reg), false);
  APP_ERROR_CHECK(err_code);
  
  free(reg);
  
  TWI_Delay(10);
}

When using the malloc function, I always get an array with a size of 4, regardless of the value of the X variable. I also tried to use the nrf_malloc function. The result is exactly the same.

Maybe there are ideas why he doesn't want to create an array of the required size.

Thank you in advance

Parents Reply Children
No Data
Related