Ik heb het volgende stukkie code:
Als ik nu mtrace uitvoer op het gegenereerde bestand, dan zie ik:
Het maakt niet uit of ik van OS een pointer naar een string maak, en netjes delete als ik er klaar mee ben, of 'em declareer zoals hier boven. In bijde gevallen beweerd mtrace dat er 500(K)B (zijn 't KBytes, of Bytes?) niet vrijgegeven wordt.
Is dit een probleem met mtrace, of met de string class?
Het betreft Linux 2.4.16 met glibc 2.2.4 en gcc 2.95.3.
code:
1
2
3
4
5
6
7
8
9
10
11
12
| #include <iostream>
#include <string>
#include <mcheck.h>
int main()
{
mtrace();
string OS = "GNU/Linux";
std::cout << OS << endl;
} |
Als ik nu mtrace uitvoer op het gegenereerde bestand, dan zie ik:
code:
1
2
3
4
5
6
| remenic@sidney:~/projects/mcheck> mtrace m2.mt Memory not freed: ----------------- Address Size Caller 0x0804c2f8 0x500 at 0x8049e70 |
Het maakt niet uit of ik van OS een pointer naar een string maak, en netjes delete als ik er klaar mee ben, of 'em declareer zoals hier boven. In bijde gevallen beweerd mtrace dat er 500(K)B (zijn 't KBytes, of Bytes?) niet vrijgegeven wordt.
Is dit een probleem met mtrace, of met de string class?
Het betreft Linux 2.4.16 met glibc 2.2.4 en gcc 2.95.3.