Heap and FreeRtos new

Hi, I’m facing strange issues in initialization phasis which begins to go out of my field of expertise. I searched for any recommandations on FreeRtos website about C++ integration but I didn’t find any good information about my issue (if it exists please point me to the right direction). The fact is that when I use a C++ “new” statement, the constructor runs (checked with debugger), but several instructions latter (for instance after having build a parent class), I suddenly see the members to change value. I think something is badly configured with my memory management, but I can’t figure out what. Could anyone help ? I’m using heap1.c and I have overloading the new operators like this : ~~~ void * operator new( sizet size ) { return pvPortMalloc( size ); } void * operator new[]( size_t size ) { return pvPortMalloc(size); } void operator delete( void * ptr ) { vPortFree ( ptr ); } void operator delete[]( void * ptr ) { vPortFree ( ptr ); } ~~~ I also have made a call to __libcinitarray() see my reset handler : ~~~ void ResetHandler(void) { uint32t *pSrc, *pDest;
/* Initialize the relocate segment */
pSrc = &_etext;
pDest = &_srelocate;

if (pSrc != pDest) {
    for (; pDest < &_erelocate;) {
        *pDest++ = *pSrc++;
    }
}

/* Clear the zero segment */
for (pDest = &_szero; pDest < &_ezero;) {
    *pDest++ = 0;
}

/* Set the vector table base address */
pSrc = (uint32_t *) & _sfixed;
SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk);

if (((uint32_t) pSrc >= IRAM0_ADDR) && ((uint32_t) pSrc < NFC_RAM_ADDR)) {
    SCB->VTOR |= (1UL) << SCB_VTOR_TBLBASE_Pos;
}

SystemInit();

// Set Systick to 1ms interval, common to all SAM3 variants
if (SysTick_Config(SystemCoreClock / 1000))
{
  // Capture error
  while (1);
}

// Initialize board
init();

//Wait 1 ms
uint32_t start = GetTickCount();
do {
    yield();
} while (GetTickCount() - start < 1);

// Initialize C library
__libc_init_array();

/* Branch to main function */
main();

/* Infinite loop */
while (1);
} ~~~

Heap and FreeRtos new

heap1 has no free(), so if you have descructors use heap4.