je n'arrive pas aussi à allouer de la mémoire même sur une simple matrice: unsigned short lst[x][y];
Aussi, il est plus interessant d'utiliser new et delete pour créer un espace de stockage ou malloc et free?
Euh, c'est de taille fixe ça Tu veux dire unsigned short *lst[x][y] ?
Tu fais du C++ ? Je croyais que tu voulais le faire pour calc aussi... Pour ta question, il n'y a aucun intérêt à utiliser new/delete si c'est pour le faire sur un 'int[n]' (mais en principe tu n'as pas le droit de mélanger malloc/free et new/delete dans un prog C++, donc si tu utilises des containers C++ du genre vector ou string, il faut que tu utilises new/delete)
Sasume :
Une question à propos de new et delete :
Ce sont bien deux opérateurs du C++ ?
Cela signifie qu'ils ne sont pas définis dans la libc++ (enfin, je ne sais pas comment elle s'appelle) ?
Mais pourtant les opérations d'allocation/désallocation de mémoire sont dépendantes du système, non ? Cela signifie que si on veut porter g++ vers un autre système, il n'y aura pas seulement la libc++ à porter, mais aussi l'intérieur du compilateur ? Je me doute bien que de toute façon, il y aurait des petits changement à faire pour porter un compilo vers une autre système, mais pas aussi importants que ceux nécessités par l'implantation de new et delete.
Bah en fait oui mais je ne veux pas que le compilateur créer cette espace, je veux m'en occuper.
PolluxAh merci, je comprends mieux
: Ce sont des opérateurs dans le sens où il y a un support de new/delete dans le compilo (à cause de la syntaxe "bizarre" qui ne ressemble pas du tout à une fonction). Mais c'est la libc++ qui définit ce que font ces opérateurs (par une surcharge d'opérateur, comme pour << ou >> pour les streams; la seule différence étant qu'il n'y a aucun type pour lequel new/delete est défini par défaut, contrairement à <</>> qui est déjà défini pour des entiers).
Passe par des matrices 1D, alors, c'est plus simple...
geogeo :
J'ai une matrice de pointeurs de ce genre void *ptr[x][y]; et je voudrais lui allouer moi même la mémoire qu'il faut, soit x*y*sizeof (void*); comment je dois faire avec malloc, je n'arrive pas aussi à allouer de la mémoire même sur une simple matrice: unsigned short lst[x][y];
Aussi, il est plus interessant d'utiliser new et delete pour créer un espace de stockage ou malloc et free?
Pollux
: (mais en principe tu n'as pas le droit de mélanger malloc/free et new/delete dans un prog C++, donc si tu utilises des containers C++ du genre vector ou string, il faut que tu utilises new/delete)
Sasume :
Une question à propos de new et delete :
Ce sont bien deux opérateurs du C++ ?
Cela signifie qu'ils ne sont pas définis dans la libc++ (enfin, je ne sais pas comment elle s'appelle) ?
Mais pourtant les opérations d'allocation/désallocation de mémoire sont dépendantes du système, non ? Cela signifie que si on veut porter g++ vers un autre système, il n'y aura pas seulement la libc++ à porter, mais aussi l'intérieur du compilateur ? Je me doute bien que de toute façon, il y aurait des petits changement à faire pour porter un compilo vers une autre système, mais pas aussi importants que ceux nécessités par l'implantation de new et delete.
Pollux
: Mais peu de compilos C++ (à part GCC, et encore c pas tout à fait sûr) gèrent ça, donc c pas forcément une super idée...
Variable-length automatic arrays are allowed in ISO C99, and as an extension GCC accepts them in C89 mode [remarque: il s'agit évidemment du gnu89 et pas du c89 strict] and in C++
.
Tu peux très bien les utiliser dans le même programme (sinon, les programmes combinés C-C++ ne marcheraient pas). Ce que tu n'as pas le droit de faire, c'est d'utiliser une fonction différente pour allouer et pour libérer.
g++ gère le VLAs en C++. http://gcc.gnu.org/onlinedocs/gcc-3.3.2/gcc/Variable-Length.html#Variable%20Length
geogeo :
j'ai un petit soucie, j'ai réalisé la méthode de compression LZW, ça fonctionne à merveille sauf que je trouve la compression lente même avec mes tables qui regroupe une liste des élements du dictionnaire commencant par la même lettre. Y aurait-il un moyen d'accélérer la recherche dans le dictionnaire?
J'ai aussi entendu parlé de Huffman progressif, pas besoin de stocker une table au début du fichier et comment ça focntionne car aucune infos sur ce sujet.Le JPEG utilise le Huffman progressif ou semi-adaptatif?
~ $ ls -l cps* | sort -rw-r--r-- 1 Paul Aucun 659805 Feb 27 00:57 cps.rar -rw-r--r-- 1 Paul Aucun 729001 Feb 27 00:53 cps.pdf.bz2 -rw-r--r-- 1 Paul Aucun 1060492 Feb 27 00:57 cps.zip -rw-r--r-- 1 Paul Aucun 1089194 Feb 27 00:53 cps.pdf.gz -rw-r--r-- 1 Paul Aucun 1573408 Feb 27 00:55 cps.lz77 * -rw-r--r-- 1 Paul Aucun 2295943 Feb 27 00:54 cps.lzw * -rw-r--r-- 1 Paul Aucun 3676479 Feb 27 00:55 cps.huff * -rw-r--r-- 1 Paul Aucun 5791840 Feb 27 00:56 cps.tpe * -rw-r--r-- 1 Paul Aucun 6024624 Feb 27 00:53 cps.pdf << ORIGINAL -rw-r--r-- 1 Paul Aucun 6155183 Feb 27 00:55 cps.rle2 * -rw-r--r-- 1 Paul Aucun 10608445 Feb 27 00:55 cps.rle *
Tu peux très bien les utiliser dans le même programme (sinon, les programmes combinés C-C++ ne marcheraient pas). Ce que tu n'as pas le droit de faire, c'est d'utiliser une fonction différente pour allouer et pour libérer.
Je crée l'arbre, je compresse en LZ77