C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Строки с завершающим нулевым символом, как работать то с ними?
gore
Отправлено: 27.01.2005, 12:14


Ученик-кочегар

Группа: Участник
Сообщений: 17



что-то я никак не мргу понять некоторых моментов работы с массивами символов
CODE

char * str;
strcpy (str, "Строка");

это неправильно?
strcopy выделяет область в памяти для копируемой строки?
если да то — то нужно ли ее потом освобождать? или автоматом? или как?


Benish
Отправлено: 27.01.2005, 13:09


Дежурный стрелочник

Группа: Участник
Сообщений: 67



А ты попробуй это запусти. И сам все увидишь.
С какого перепугу strcpy память будет выделять?

Description
Copies one string into another.
Copies string src to dest, stopping after the terminating null character has been moved.

Точнее и не скажешь.
Gedeon
Отправлено: 27.01.2005, 13:31


Ветеран

Группа: Модератор
Сообщений: 1742



CODE

//---------------------------------------------------------------------------
#include <alloc>
#include <stdio>
#include <string>
#include <conio>

#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
   char * str;
   str = (char*)malloc(10); // allocate memory for string
   strcpy (str, "Stroka");
   printf("Tak-to luchshe: %s\n", str);
   getch();
   free(str); // free memory
   return 0;
}
//---------------------------------------------------------------------------
gore
Отправлено: 27.01.2005, 13:45


Ученик-кочегар

Группа: Участник
Сообщений: 17



а так? тоже верно?

CODE

{
    long STR_LENGTH = 10;
    char * str = new char [ STR_LENGTH + 1];
    .............
    delete str;
}

==============
и еще вопрос:
такая запись
CODE

      char * str = "Инициализированная строка"

требует освобождения памяти??
AVC
Отправлено: 27.01.2005, 13:51


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE

требует освобождения памяти??

Освобождать можно только то, что было захвачено. smile.gif
Boyko
Отправлено: 28.01.2005, 15:52


Станционный диспетчер

Группа: Участник
Сообщений: 88



QUOTE (gore @ 27/01/2005, 12:16)
strcopy выделяет область в памяти для копируемой строки?

Нет! Програмер надо выделить! sad.gif

QUOTE (gore @ 27/01/2005, 12:16)

если да то — то нужно ли ее потом освобождать? или автоматом? или как?

а если нет? biggrin.gif

smile.gif
выделяет new освобождает delete

выделяет malloc освобождает free

Вернуться в Вопросы программирования в C++Builder