Skip to content

fix: resolve memory leak in CPU destructors - #28

Merged
mariusmm merged 1 commit into
masterfrom
fix/memory-leak-destructors
Nov 8, 2025
Merged

mariusmm merged 1 commit into
masterfrom
fix/memory-leak-destructors

Conversation

@mariusmm

@mariusmm mariusmm commented Nov 8, 2025

Copy link
Copy Markdown
Owner

Fix double-delete bug where m_qk was allocated in base class CPU constructor but deleted in derived class destructors (CPURV32/CPURV64).

Changes:

  • Move m_qk deletion from derived class destructors to base class CPU destructor where it was originally allocated
  • Add null pointer checks before all delete operations in destructors
  • Set pointers to nullptr after deletion for safety
  • Add comments explaining cleanup responsibility

This fixes:

  • Double-delete bug that could cause undefined behavior
  • Potential memory leaks from improper cleanup order
  • Missing null pointer safety checks

Files modified:

  • inc/CPU.h: Changed base class destructor from =default to proper implementation
  • src/CPU.cpp: Added base class destructor to delete m_qk
  • src/RV32.cpp: Removed m_qk deletion, added null checks
  • src/RV64.cpp: Removed m_qk deletion, added null checks

Fix double-delete bug where m_qk was allocated in base class CPU
constructor but deleted in derived class destructors (CPURV32/CPURV64).

Changes:
- Move m_qk deletion from derived class destructors to base class CPU
  destructor where it was originally allocated
- Add null pointer checks before all delete operations in destructors
- Set pointers to nullptr after deletion for safety
- Add comments explaining cleanup responsibility

This fixes:
- Double-delete bug that could cause undefined behavior
- Potential memory leaks from improper cleanup order
- Missing null pointer safety checks

Files modified:
- inc/CPU.h: Changed base class destructor from =default to proper
  implementation
- src/CPU.cpp: Added base class destructor to delete m_qk
- src/RV32.cpp: Removed m_qk deletion, added null checks
- src/RV64.cpp: Removed m_qk deletion, added null checks
@mariusmm
mariusmm merged commit 155f1f5 into master Nov 8, 2025
2 checks passed
@mariusmm
mariusmm deleted the fix/memory-leak-destructors branch November 8, 2025 12:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant