Help плиз с массивами ...

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

ignosya
Сообщения: 2
Зарегистрирован: 24 ноя 2004, 23:00

Привет!

Вот такая бяка ... Есть прога, такого вот типа:

#include <stdio.h>
char Scr[64000];
void main () {
}

Но по какой-то причине компиляторы не дают создать такой большой массив. Как это заставить работать?
DeeJayC
Сообщения: 497
Зарегистрирован: 17 фев 2004, 11:26
Откуда: Ленинград (который Город на Неве)
Контактная информация:

Динамически выделять надо. Например, так (для ++)

Код: Выделить всё

char *Scr;

void main() {
   Scr = new char[64000];
};
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)

viel spass, DeeJayC
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

И не забывать при этом динамически удалять :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

Вопрос в продолжение:
не удаленная память освобождается ли системой после завершения приложения (под вынь нт) ?
В SAD - все в SAD.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Не удаляется - это лик. К сожалению С++ не Java :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

Не удаляется - это лик. К сожалению С++ не Java
Точно не удаляется? Именно после завершения *процесса* ?
2B OR NOT(2B) = FF
DeeJayC
Сообщения: 497
Зарегистрирован: 17 фев 2004, 11:26
Откуда: Ленинград (который Город на Неве)
Контактная информация:

Absurd писал(а):
Не удаляется - это лик. К сожалению С++ не Java
Точно не удаляется? Именно после завершения *процесса* ?
На сколько я понимаю - удаляется. После завершения процесса.
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)

viel spass, DeeJayC
DeeJayC
Сообщения: 497
Зарегистрирован: 17 фев 2004, 11:26
Откуда: Ленинград (который Город на Неве)
Контактная информация:

Чтобы не быть голословным:

Код: Выделить всё

*******:~/tmp> free 
             total       used       free     shared    buffers     cached
Mem:        191188     181788       9400          0      41408      95376
-/+ buffers/cache:      45004     146184
Swap:       385520          0     385520
*******:~/tmp> a.out 
*******:~/tmp> free 
             total       used       free     shared    buffers     cached
Mem:        191188     181788       9400          0      41408      95376
-/+ buffers/cache:      45004     146184
Swap:       385520          0     385520
*******:~/tmp> 

Код: Выделить всё

*******:~/tmp> cat test.cpp 

char *v;

int main( int argc, char **argv ) {
        v = new char[128000];
        return 0;
};

"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)

viel spass, DeeJayC
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Тогда бы мы работу потеряли, господа, потому, что не нужно было бы искать лики перед релизами :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

В Debug'е собрано - однозначно. Debuger такие вещи отслеживает, он же умеет подчищать лики. Попробуй Release.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить