У меня есть ситуация, подобная следующей, и я не уверен, утекли ли элементы std :: string памяти struct или это нормально.Память, выделяемая этими двумя std :: strings, удаляется при вызове free(v)
?
struct MyData
{
std::string s1;
std::string s2;
};
void* v = malloc(sizeof(MyData));
...
MyData* d = static_cast<MyData*>(v);
d->s1 = "asdf";
d->s2 = "1234";
...
free(v);
Утечка или нет?
Я использую void-указатель, потому что у меня есть другая улучшенная структура, которая состоит из enum и void-указателя.В зависимости от значения переменной enum, void * будет указывать на различные структуры данных.
Пример:
enum-field имеет EnumValue01 => указатель void будет указывать на malloc'd MyData01 struct
enum-field имеет EnumValue02 => void-указатель будет указывать на malloc'd MyData02 struct
Предложения для разных подходов очень приветствуются, конечно.