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 |
требует освобождения памяти??
|
Освобождать можно только то, что было захвачено. |
|
Boyko |
Отправлено: 28.01.2005, 15:52 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 88
|
QUOTE (gore @ 27/01/2005, 12:16) | strcopy выделяет область в памяти для копируемой строки?
|
Нет! Програмер надо выделить!
QUOTE (gore @ 27/01/2005, 12:16) |
если да то — то нужно ли ее потом освобождать? или автоматом? или как? |
а если нет?
выделяет new освобождает delete
выделяет malloc освобождает free |
|