Back to skills
SKILL.md
Cpp
ASecurityWrite safe C++ avoiding memory leaks, dangling pointers, undefined behavior, and ownership confusion.
- 17 stars
- 0 votes
- 1 copy
- 5 views
- Added September 6, 2026
Security analysis
100/100Pro scans all 10 files and shows the line behind each finding
npx -y skills add clawic/skills --skill cpp --agent claude-codeAre you the author of Cpp?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/clawic-cpp)---
name: C++
slug: cpp
version: 1.0.1
description: Write safe C++ avoiding memory leaks, dangling pointers, undefined behavior, and ownership confusion.
homepage: https://clawic.com/skills/cpp
metadata:
clawdbot:
emoji: ⚡
requires:
bins:
- g++
os:
- linux
- darwin
- win32
displayName: C++
---
## Quick Reference
| Topic | File |
|-------|------|
| RAII, smart pointers, new/delete | `memory.md` |
| Raw pointers, references, nullptr | `pointers.md` |
| Rule of 3/5/0, inheritance, virtual | `classes.md` |
| Containers, iterators, algorithms | `stl.md` |
| Templates, SFINAE, concepts | `templates.md` |
| Threads, mutex, atomics | `concurrency.md` |
| C++11/14/17/20, move semantics | `modern.md` |
| Undefined behavior traps | `ub.md` |
## Critical Rules
- Raw `new` without `delete` leaks — use `std::unique_ptr` or `std::make_unique`
- Returning reference to local — undefined behavior, object destroyed on return
- `==` for C-strings compares pointers — use `std::string` or `strcmp()`
- Signed integer overflow is UB — not wrap-around like unsigned
- Virtual destructor required in base class — otherwise derived destructor skipped
- `std::move` doesn't move — it casts to rvalue, enabling move semantics
- Moved-from object valid but unspecified — don't use without reassigning
- Data race on non-atomic is UB — use `std::mutex` or `std::atomic`
- `vector<bool>` is not a real container — returns proxy, use `deque<bool>`
- `map[key]` inserts default if missing — use `find()` or `contains()` to check
- Braced init `{}` prevents narrowing — `int x{3.5}` errors, `int x(3.5)` truncates
- Iterator invalidation on `push_back` — vector may relocate, invalidating iterators
- `string_view` doesn't own data — underlying string must outlive the view
Files in this skill
- SKILL.md
- _meta.json
- classes.md
- concurrency.md
- memory.md
- modern.md
- pointers.md
- stl.md
- templates.md
- ub.md
Attribution
Comments
Loading comments…