Я искал ответ на этот вопрос, но, похоже, не нашел его.(У меня довольно ограниченный опыт работы с C ++)
В моей библиотеке я освобождаю строку.(Удивительно, да?)
Вот здесь и возникает проблема.У меня есть структура, которая содержит символ *, который может быть выделен в куче или не может быть.Хотя это допустимый указатель, он не может быть освобожден.
IE
char* s1 = "A String";
char* s2 = (char*)memcpy(malloc(9), s1, 9);
free(s2);
free(s1);
Приведет к ошибке "free (s1);"(Как и должно быть) Поскольку s1 на самом деле не нужно для освобождения, (это не в куче), как я могу справиться с этим "приемлемым" способом?(По аналогичным темам ответ «пусть это рушится» не показался разумным ИМО)
Поскольку структура создается не только библиотекой, невозможно гарантировать, что строка будет правильно скопированаиспользуя что-то вроде memcpy.
Поскольку это библиотека Windows, мне не нужно беспокоиться об использовании ISO C или стандартных функций C.