Я просто написал код на С++, который выполняет некоторые манипуляции с строкой, но когда я запускал valgrind, он показывает некоторые возможные утечки памяти. Отладка кода до гранулярного уровня Я написал простую программу на С++, которая выглядит так:
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
std::string myname("Is there any leaks");
exit(0);
}
и запустив valgrind над ним, я получил:
==20943== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 26 from 1)
==20943== malloc/free: in use at exit: 360,645 bytes in 12,854 blocks.
==20943== malloc/free: 65,451 allocs, 52,597 frees, 2,186,968 bytes allocated.
==20943== For counts of detected errors, rerun with: -v
==20943== searching for pointers to 12,854 not-freed blocks.
==20943== checked 424,628 bytes.
==20943==
==20943== LEAK SUMMARY:
==20943== definitely lost: 0 bytes in 0 blocks.
==20943== possibly lost: 917 bytes in 6 blocks.
==20943== still reachable: 359,728 bytes in 12,848 blocks.
==20943== suppressed: 0 bytes in 0 blocks.
==20943== Reachable blocks (those to which a pointer was found) are not shown.
==20943== To see them, rerun with: --show-reachable=yes
Затем мне показалось, что мы принудительно вышли (что я также выполнил в своем исходном коде на С++). Теперь проблема в том, что я хочу выйти из программы, так как мой предыдущий старый код ждет статуса выхода нового кода. Например, двоичный файл a.out ожидает статуса выхода b.out. Есть ли способ избежать утечек памяти, или мне действительно нужно беспокоиться об утечке памяти, поскольку программа уже выходит из этой точки.
Это также вызывает у меня другой вопрос, является ли такой код вредным?
#include<stdio.h>
#include<cstdlib>
int main()
{
char *p=(char *)malloc(sizeof(char)*1000);
exit(0);
}