...
| Code Block | ||||
|---|---|---|---|---|
| ||||
#include <new>
struct S {
void f();
};
void S::f() noexcept(false) {
S *s = new S;
// ...
delete s;
// ...
s->f();
}
|
The function s::f() is marked noexcept(false) to comply with MEM52-CPP. Detect and handle memory allocation errors.
...
Automatic storage duration can be used instead of dynamic storage duration. Since s is not required to live beyond the scope of s::f(), this compliant solution uses automatic storage duration to limit the lifetime of s to the scope of s::f():
| Code Block | ||||
|---|---|---|---|---|
| ||||
struct S {
void f();
};
void S::f() {
S s;
// ...
s.f();
} |
...