fura13
Конечно, пока в main создается объект, без явного delete он по завершению main и разрушается.
Строка должна уничтожаться после того, как объект выйдет из области видимости (scope), например, после выхода из функции.
if (someThing) {
string s = "the string";
//-----
}// Вот тут память должна освобождаться
А в данном случае delete не будет работать, потому что s - не указатель.
string *s = new string("Some text");
//...
delete s;
Правда, сам я со string сто лет не работал, может, че уже изменилось

На CBuilder есть аналог, там проще.