[Bulma] Gestió de memòria

Toni Pizà servomac en gmail.com
Mar Dic 11 15:47:25 CET 2007


Bones! He intentat fer una matriu bidimensional de caracters en C, de
dimensió 5000 * 5000. Si tan sols faig la declaració i acab el
programa, funciona bé, per exemple :

  1 #include <stdio.h>
  2
  3 #define MAX 5000
  4
  5 int main() {
  6         char matriu[MAX][MAX];
  7
  8         return 0;
  9 }

En canvi, si faig qualsevol cosa, una assignació o una crida a funció,
després de la delcaració, retorna un core dumped quan l'intent
executar. Per exemple, si a la linia 7 pos un simple printf("Hello
world!\n"), rebenta.

Si ajust la mida de la matriu a 2985, a vegades rebenta i a vegades
s'executa correctament. La màquina té 1 GB de RAM i dos gigas de swap,
per memòria física no crec que sigui. Sembla un Expedient X :P

Estic fent feina amb una KUbuntu amb kernel 2.6.22-14-generic, la
versió 2.6.1-1ubuntu10 de libc6-dev, gcc versió 4.1.3 20070929 i el
següent ulimit :

 servo en lab:~$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 8126
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 8126
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Algú sap que podria ser?? Em té intrigat .. :)

-- 
http://servomac.blogspot.com


Más información sobre la lista de distribución Bulmailing