Logo Pico-Framework A web-first embedded framework for C++
Loading...
Searching...
No Matches
cppMemory.cpp File Reference

Global new/delete operators using FreeRTOS memory routines. More...

#include "pico/stdlib.h"
#include <cstring>
#include "FreeRTOS.h"
#include <stdio.h>
+ Include dependency graph for cppMemory.cpp:

Go to the source code of this file.

Functions

void * operator new (size_t size)
 
void * operator new[] (size_t size)
 
void operator delete (void *ptr)
 
void operator delete[] (void *ptr)
 
void * operator new (size_t, void *ptr) noexcept
 
void * operator new[] (size_t, void *ptr) noexcept
 

Detailed Description

Author
Ian Archbell

Provides replacements for C++ global new, new[], delete, and delete[] operators to use FreeRTOS pvPortMalloc and vPortFree in embedded builds. Also includes placement new for STL compatibility.

Version
0.1
Date
2025-03-31
License:\n MIT License

Definition in file cppMemory.cpp.

Function Documentation

◆ operator delete()

void operator delete ( void *  ptr)

Definition at line 37 of file cppMemory.cpp.

37 {
38 if (ptr) {
39 vPortFree(ptr);
40 }
41 }

◆ operator delete[]()

void operator delete[] ( void *  ptr)

Definition at line 43 of file cppMemory.cpp.

43 {
44 if (ptr) {
45 vPortFree(ptr);
46 }
47 }

◆ operator new() [1/2]

void * operator new ( size_t  size)

Definition at line 23 of file cppMemory.cpp.

23 {
24 void* pData = pvPortMalloc(size);
25 if (!pData) {
26 printf("ERROR: Memory allocation failed for size %zu!\n", size);
27 while(1); // Trap in infinite loop to catch memory failures
28 }
29 memset(pData, 0, size);
30 return pData;
31 }

◆ operator new() [2/2]

void * operator new ( size_t  ,
void *  ptr 
)
noexcept

Definition at line 50 of file cppMemory.cpp.

50 {
51 return ptr;
52 }

◆ operator new[]() [1/2]

void * operator new[] ( size_t  size)

Definition at line 33 of file cppMemory.cpp.

33 {
34 return pvPortMalloc(size);
35 }

◆ operator new[]() [2/2]

void * operator new[] ( size_t  ,
void *  ptr 
)
noexcept

Definition at line 54 of file cppMemory.cpp.

54 {
55 return ptr;
56 }