Страница 1 из 2
Help плиз с массивами ...
Добавлено: 24 ноя 2004, 23:04
ignosya
Привет!
Вот такая бяка ... Есть прога, такого вот типа:
#include <stdio.h>
char Scr[64000];
void main () {
}
Но по какой-то причине компиляторы не дают создать такой большой массив. Как это заставить работать?
Добавлено: 25 ноя 2004, 01:23
DeeJayC
Динамически выделять надо. Например, так (для ++)
Код: Выделить всё
char *Scr;
void main() {
Scr = new char[64000];
};
Добавлено: 25 ноя 2004, 11:08
Romeo
И не забывать при этом динамически удалять

Добавлено: 25 ноя 2004, 11:55
Kolinus
Вопрос в продолжение:
не удаленная память освобождается ли системой после завершения приложения (под вынь нт) ?
Добавлено: 25 ноя 2004, 12:11
Romeo
Не удаляется - это лик. К сожалению С++ не Java

Добавлено: 25 ноя 2004, 14:32
Absurd
Не удаляется - это лик. К сожалению С++ не Java
Точно не удаляется? Именно после завершения *процесса* ?
Добавлено: 25 ноя 2004, 15:44
DeeJayC
Absurd писал(а):Не удаляется - это лик. К сожалению С++ не Java
Точно не удаляется? Именно после завершения *процесса* ?
На сколько я понимаю - удаляется. После завершения процесса.
Добавлено: 25 ноя 2004, 15:49
DeeJayC
Чтобы не быть голословным:
Код: Выделить всё
*******:~/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;
};
Добавлено: 25 ноя 2004, 16:08
Romeo
Тогда бы мы работу потеряли, господа, потому, что не нужно было бы искать лики перед релизами

Добавлено: 25 ноя 2004, 16:35
Romeo
В Debug'е собрано - однозначно. Debuger такие вещи отслеживает, он же умеет подчищать лики. Попробуй Release.