begin process at 2012 05 29 08:02:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Système

 > 

Noyau

 > 

Malloc (Peut on configurer la flexibilité de l'OS)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Malloc (Peut on configurer la flexibilité de l'OS)

mardi 18 novembre 2008 à 19:49:45 | Malloc (Peut on configurer la flexibilité de l'OS)

Booster

Membre Club
Bonjour à tous,

(Un petit code vaux mieux qu'un long discourt)
char * MyZone = (char*) malloc(1024);
for (int i=0;i<2048;i++)
{
    MyZone[i]=0;
}

Ce code ne va pas planter (selon les OS) pourtant il devrait.
Ceci est due à une certaine flexibilité du noyau qui alloue plus de mémoire virtuel que ce que l'on demande.

Ma question : Peut-on restreindre cette allocation pour qu'il n'alloue que le stricte minimum (c'est à dire 1024) afin qu'il nous retourne une erreur lorsqu'on essai d'accéder a MyZone[1024]

Y'a t'il possibilité de configurer ça à la compilation du noyau, ou dans un fichier de config ?

Je vous remercie d'avance de votre aide !
mardi 18 novembre 2008 à 19:59:42 | Re : Malloc (Peut on configurer la tolérance de l'OS)

Booster

Membre Club
Je me suis mal exprimé quand je dit flexibilité le mot tolérant est plus adéquate de plus si vous connaissez une autre méthode que de modifier le noyau et sa configuration (comme une fonction c++) je suis aussi preneur :)

Merci d'avance.
mardi 18 novembre 2008 à 20:24:26 | Re : Malloc (Peut on configurer la flexibilité de l'OS)

BruNews

Administrateur CodeS-SourceS
La rigueur du développeur ne serait pas suffisante ?

ciao...
BruNews, MVP VC++
mardi 18 novembre 2008 à 20:35:26 | Re : Malloc (Peut on configurer la flexibilité de l'OS)

Booster

Membre Club
:) Certainement mais j'aimerais réellement faire cette expérience (si cela est possible).

De plus, ce type de configuration permet de vérifier que votre programme ne plantera pas un jour sans raisons.
(Car même le développeur le plus rigoureux à déjà eu ce genre de problèmes (Sur 3 lignes ont voit l'erreur mais sur 10 000 c'est moins évident)

Il y à bien des softs du type valgrind qui aide le développeurs (Pour les leaks en particulier) mais ceci serait une vrai aide suplémentaire.

Si quelqu'un connai un moyen, je suis toujours preneur.

Merci.
mardi 18 novembre 2008 à 22:08:54 | Re : Malloc (Peut on configurer la flexibilité de l'OS)

julienbj

Salut,

Je suis surpris de tes dire. Il me semble que ceci arrive quand tu développes en mode debug.
Il me semblait qu'en mode release, un plantage était quasi assuré.
Mais je dis peut être des bêtises...
Après tests, sous VS2008 en mode release, plantage du programme à cause de mémoire corrompu, mais cela dépend de ce que tu as comme données derrière....
En mode debug, plantage lors du free sur le buffer.

Dans le cas ou je me trompe:
J'ai développé une mini lib d'allocation dynamique qui "remplace" malloc, calloc, free, realloc et strdup.
Lorsque tu l'utilises en mode debug, elle t'indique une erreur si tu essaies de libérer un bloc mémoire corrompu (tu as écris avant ou après la taille que tu as alloué), et elle t'indique également les blocs non libérés lorsque tu fermes la librairie. Si elle n'est pas configurée en mode debug, elle n'ajoute presque rien à une utilisation lambda de malloc&co.
Si ça t'intéresse, je peux mettre cette lib sur cppfrance. Je me suis inspiré d'un des codes de JCDjcd. J'avais trouvé l'idée intéressante, je l'ai reprise à mes fins en l'adaptant à mes besoins.

--
Vive le C
Savon
mercredi 19 novembre 2008 à 03:41:46 | Re : Malloc (Peut on configurer la flexibilité de l'OS)

coucou747

Administrateur CodeS-SourceS
salut

sous gcc, en compilant avec l'option -g, et en lancant ton programme avec valgrind, il te liste les erreurs (et t'insulte quand t'as fait une betise :) )

brunews :
max@max-desktop:~$ valgrind konqueror

[...]

==6973==
==6973== ERROR SUMMARY: 5 errors from 1 contexts (suppressed: 336 from 4)
==6973== malloc/free: in use at exit: 1,491,952 bytes in 7,825 blocks.
==6973== malloc/free: 427,662 allocs, 419,837 frees, 90,934,292 bytes allocated.
==6973== For counts of detected errors, rerun with: -v
==6973== searching for pointers to 7,825 not-freed blocks.
==6973== checked 2,444,152 bytes.
==6973==
==6973== LEAK SUMMARY:
==6973==    definitely lost: 8,512 bytes in 171 blocks.
==6973==      possibly lost: 32 bytes in 1 blocks.
==6973==    still reachable: 1,483,408 bytes in 7,653 blocks.
==6973==         suppressed: 0 bytes in 0 blocks.
==6973== Rerun with --leak-check=full to see details of leaked memory.


et je ne suis pas sous debian testing, mais sous ubuntu stable.
mercredi 19 novembre 2008 à 09:13:47 | Re : Malloc (Peut on configurer la flexibilité de l'OS)

BruNews

Administrateur CodeS-SourceS
Windows ONLY:
julienbj
malloc() est un appel HeapAlloc() sur GetProcessHeap() en mode sérialisé.
Mode debug ou release n'entre pour rien dans l'affaire, c'est une question de taille de page mémoire, 4 Ko.
Si donc on appelle malloc pour 1024 une 1ere fois, il reste 3 Ko de libre derrière. Tant qu'on n'y aura pas mis des données vitales, rien à craindre.

ciao...
BruNews, MVP VC++


Cette discussion est classée dans : configurer, os, malloc, flexibilité, myzone


Répondre à ce message

Sujets en rapport avec ce message

malloc de messagerie [ par Apollon ] peut-on m'expliquer comment mallocer la messagerie Synapse ! une question d OS [ par PlayeR ] Le debuger tres connus SoftIce existe-t il en une version qui tourne sur windows Xp/2000/nt4??? os cours!!! [ par dontsleep ] salut a quiconque lira ce message de desespoir...Je cherche un code source genre Winexec() mais pour ouvrirn'importe quoi d'autre du moins des fichier cacher/activer une partition [ par lysane ] Bonjour,J'ai 2 images avec le même OS sur 2 partitions de mon disque durje souhaiterai pouvoir cacher ou activer les partitions je sais que c'est au Probleme malloc [ par zzzzzz ] <img src=/imgs2 pb malloc [ par youpiyoyo ] d'apres msdn char *string; /* Allocate space for a path name */ string = malloc( _MAX_PATH );deja ca chez moi ca compil pas me compilo me di impos Posséder Mac OS X et Pouvoir Editer et compiler de la source Cpp [ par sidewalker ] Je voudrais savoir: Existe-t-il des compilateurs gratuits pour mac OS X sur le web???Ou alors donnez-moi le nom de compilateurs pour OSX que vous conn OS [ par SatanCorporation ] Salut a tous !!!!!je bébute le CPP et je voudrais savoir si un programme EN CPP peut etre lancé sous dosEt si cest possoble de creer un OS capable de recherche du path de l'os [ par Cameleon69 ] Salut a tousJe cherche comment récupérer le path où se trouve l'os.Ayant un programme qui doit trouner sur plusieurs OS différents, je ne suis pas cer langue OS & ressources [ par hilairenicolas ] Bonjour à tous,je cherche à récupperer des chaines de caracteres en fonction de la langue de l'OS.Par exemple, je cherche à pouvoir afficher un "OUI/N


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales