Skip to content

fix: resolve memory leak in CPU destructors#28

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

fix: resolve memory leak in CPU destructors#28
mariusmm merged 1 commit intomasterfrom
fix/memory-leak-destructors

Conversation

@mariusmm
Copy link
Owner

@mariusmm mariusmm commented Nov 8, 2025

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