Есть кое-что, что мне неясно в отношении DLL и разных версий среды выполнения.
Я знаю, что если, например, в моей DLL у меня была такая функция:
void deletePointer(int *something)
{
delete something;
}
если что-то было выделено с использованием new в моей функции main (), это может вызвать проблему. Я не совсем понимаю, о чем это:
скажем, у меня есть класс в DLL, и я создаю его экземпляр в main, а затем попробуйте сделать это снова, это все еще будет проблемой?
Ex:
// в моей DLL
class Base
{
void deletePointer(int *something)
{
delete something;
}
}
// в exe
int main()
{
Base * base = new Base();
int * myInt = new int(23);
base->deletePointer(myInt); //is this a problem?
}
По сути, мне неясно, применяется ли правило времени выполнения «тот, кто выделил его, должен удалить его», если я создаю экземпляр класса DLL, который удаляет указатель.
Спасибо