Страница 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.