Soyez le premier à donner votre avis sur cette source.
Vue 5 690 fois - Téléchargée 650 fois
// le ZIP contient la documentation // toutes les fonctions sont documentées, vous devez copier le module de la classe dans // votre projet pour l'utiliser. // cette classe peut même être utile au debuging de programmes importés du C. // si par exemple vous avez: int main(void) { int* p; p = malloc(sizeof(int) * 40); ... p[var] = valeur; // var peut prendre une valeur causant un seg fault si < 0 ou > 39 ... free(p); return 0; } // remplacez les lignes de déclaration et d'allocation par: int main(void) { SecureArray< int > p; ... p[var] = valeur; // si var prend une mauvaise valeur, une exception est lancée ... //free(p); inutile, car l'objet p est automatiquement détruit avec le return return 0; }
et oui tu as raison il faudrait la faire dériver de std::exception mais le but de cette classe c'etait juste de faire un conteneur totalement indépendant de la STL.
par rapport à std::vector je suis encore loin de la qualité qu'il peut fournir et je ne garanti pas non plus la compatibilité de l'interface avec les conteneurs stl (iterateurs...).
c'est juste qu'en C++ les conteneurs c'est quelque chose de tres marrant a coder, et utiliser la STL c'est se priver totalement de cette expérience, c'est pour ca que je ne l'aime pas :)
un conseil:
fais dériver ta classe OutOfRange de std::exception qui contient déja une méthode what() a surchager qui renvoie un const char* et qui décrit l'erreur. comme ca y'aurait pas besoin d'utiliser ton GetErrorStringPtr qui est vraiment pas beau !!!!
sinon c'est pas mal, mais ya t'il un gain par rapport a l'utilisation de std::vector ??
bon, j'ai eu quelques problemes quand j'ai fait mon ZIP (bzip2 plutot que "Deflate" ca n'a pas plu au site).
je suis donc désolé pour les 500 tentatives manquées qui ont floodées le log des mises à jour lol. pardon encore.
evidemment que c'est moi et même à 100% voyons et si il n'y avais qu'une ligne pas de moi j'aurais respecté la propriété intellectuelle et j'aurais cité l'auteur.
deuxièmement, int 32768 ?? non pas du tout ca c'est les variables de types 16 bits qui peuvent atteindre cette limite, et d'ailleur tu as ecris 2^8 ce qui fait 256 pas 32768. la variable int prend un registre processeur et sa taille dépend donc de la machine, et depuis les 386 ces registres font 32 bits donc un int fait 32 bits donc a une valeur maximum de 2 147 483 647 ce qui n'est pas si limité que ca pour une taille de tableau étant donné que la mémoire maximum allouable est de 4GO et le plus petit type etant BYTE on peut théoriquement allouer 50% de la mémoire au minimum si on utilise le maximum du type int (mais ca ne fonctionnera jamais dans la réalité il faut utiliser plusieurs tableaux pour remplir un espace aussi immense).
par contre etant donné que j'utilise new et delete peut etre que la rapidité d'allocation sera moins puissante que ta methode realloc.
et franchement je suis déçu que tu puisse croire que je n'ait pas édité de code moi même mais je te pardonne car tu ne me connais pas, et d'un coté c'est une sorte de compliment ! :)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.