DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
| Code Block |
|---|
void f(const std::string& s) { cout << s << endl };
void g() {
for (int i = 0; i < 1000; ++i) { f("hello"); };
}
|
This actually allocates, copies and deletes 1000 heap buffers with the string "hello"! The problem here is that "hello" is _not_ an instance of {{Wiki Markup std::string}}. It is a char\[5\] that must be converted to a temporary {{std::string}} using the appropriate constructor. However {{std::string}} always wants to manage its own memory, so the constructor allocates a new buffer and copies the string. Once f() returns and we go round the loop again the temporary is deleted along with its buffer.
Here's a better solution:
...