Here is the result of Valgrind:
==6519== at 0x4C25885: operator new(unsigned long) (vg_replace_malloc.c:319)
==6519== by 0x4EE65D8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (new_allocator.h:104)
==6519== by 0x4EE7CE0: char* std::string::_S_construct<char const*>(char const*, char const*, std::allocator<char> const&, std::forward_iterator_tag) (basic_string.tcc:138)
==6519== by 0x4EE80F7: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (basic_string.h:1725)
==6519== by 0x41C399: pilInpOpts::pilInpOpts() (pilInpOpts.cpp:12)
==6519== by 0x403A55: main (main.cpp:32)
The same error is repeated for each entry on the map.
main.cpp line 32:
pilInpOpts input;
Line 12 of pilInpOpts is part of the constructor:
#include "pilInpOpts.h"
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
pilInpOpts::pilInpOpts()
{
piloptmap.insert(std::pair<std::string, bool>("bforce",false));
piloptmap.insert(std::pair<std::string, bool>("coef",false));
piloptmap.insert(std::pair<std::string, bool>("dualjet",false));
piloptmap.insert(std::pair<std::string, bool>("flow",false));
piloptmap.insert(std::pair<std::string, bool>("gforce",false));
piloptmap.insert(std::pair<std::string, bool>("gpress",false));
piloptmap.insert(std::pair<std::string, bool>("matlab",false));
piloptmap.insert(std::pair<std::string, bool>("model",false));
piloptmap.insert(std::pair<std::string, bool>("out_shade",false));
piloptmap.insert(std::pair<std::string, bool>("out_shade_file",false));
piloptmap.insert(std::pair<std::string, bool>("press",false));
piloptmap.insert(std::pair<std::string, bool>("proc",false));
piloptmap.insert(std::pair<std::string, bool>("shade",false));
piloptmap.insert(std::pair<std::string, bool>("summary",false));
piloptmap.insert(std::pair<std::string, bool>("trans",false));
platpath = "";
vehpath = "";
apppath = "";
dockpath = "";
};
I found several posts in SO that said Valgrind could produce false positives. For example: std :: string memory leak
Is this false positive, since std :: string has all the constructors, etc., does it need to be done? Or do I need to change the use of C character arrays on the map?