Второй вариант не скомпилируется. Нужно указать размер, например:
char *str2 = new char[500];
strcpy(str2, "Hello, world.");
ВФ>Выделиться одинаковое кол-во памяти? ВФ>Нужно ли потом освобождать str и str2?
в первом случае память выделится до выполнения программы, и её выделится столько, чтобы уместить строку "Hello, world.\n" и еще завершающий нулевой байт. То есть 15 байт.
Освобождать её не надо. Но и записывать в эту строку ничего нельзя, потому что она — константа.
Длина str2 как массива — 500 байт (или сколько пожелаете). Длина str2 как строки — 14 символов. Эту длину возвратит strlen(str2).
str2 надо освободить с помощью delete:
delete [] str2; // именно так, с пустыми квадратными скобками
Здравствуйте, Вульфович Филипп, Вы писали:
ВФ>Добрый день! Мне по работе ВФ>приходится иметь дело с библиотекой, написанной на C++ ... ВФ>Пользуюсь Visual Studio 2005.
ВФ>С пользовался только в институте — представляю только в общих чертах... ВФ>Даже не новичок, а чайник
ВФ>Непонятно, как происходит работа со строками...
ВФ>Чем отличается:
Здравствуйте, Мишень-сан, Вы писали:
МС>Если со строками работаете в динамике, используйте лучше std::string — он автоматизирует управление памятью. МС>И почитайте что-нить по С++ и STL.
Спасибо, нашел... Полезная вещь. А как подключить STL к проекту?
Здравствуйте, Вульфович Филипп, Вы писали:
ВФ>Здравствуйте, Мишень-сан, Вы писали:
МС>>Если со строками работаете в динамике, используйте лучше std::string — он автоматизирует управление памятью. МС>>И почитайте что-нить по С++ и STL.
ВФ>Спасибо, нашел... Полезная вещь. А как подключить STL к проекту?
Здравствуйте, Мишень-сан, Вы писали:
МС>Тогда оптимально вообще
static const char str[] = "Hello, world.\n";
оптимально для чего?
с одной стороны памяти ипользуется больше, с другой я знаю не так много систем (и те встроенные) на некоторых обращение будет быстрее.