Fabulosa herramienta de GNU para programación de bajo nivel. [Compatible incluso para Windows]

El linker que usa gcc y g++, tiene la opción de -fsatinize=address (opción al linkar, no al compilar)

La cuál permite, en tiempo de ejecución, que el programa detecte las fugas de memorias, diciendote el archivo y linea que ocasiona la fuga.

Creo que es necesario tener activo, en la compilación no en el linker, la opción -g, qué mete el código fuente en el binario.

En C/C++:

gcc -g main.c -c -o main.o
gcc -fsatinize=address main.o -o a
g++ -g main.cpp -c -o main.o
g++ -fsatinize=address main.o -o a

En ensamblador:

yasm -f elf64 -g DWARF2 main.asm
# -f elf64 Compila ensamblador de 64bits a un archivo objeto de 64bits
# -g DWARF2 modo depuracion, incluye código fuente ensalblador al binario
# con etiquetas y comentarios de ensamblador

Luego linkar con ld (verificar) o gcc (si tiene que funcionar)

Así, en el motor que me estoy armando con SDL3, pase a tener 0, si 0, fugas de memoria…

5 Me gusta

Revisando el nuevo estándar de C/C++

C23 y C++26

Ahora C puede hacer:

inline void func(){ return; }
#warning "warning definida por el programador"
const char text[] = {
#embed "file.txt" suffix(,0)
};
int len = sizeof(text);
int *ptr = nullptr;
auto num = len;

Agregaron unas cuantas cosas, ahora C tiene nullptr, ya no más macro de NULL, se puede embeber archivos con el preprocesador, suffix() agrega algo al final, si es texto, es bueno agregarle el 0.

Y, agregaron el tipo auto.

También tiene el inline.

Cosas propias de C++ en C…

2 Me gusta