begin process at 2012 05 28 07:22:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

allocation memoire qui echoue, mais pourquoi??


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

allocation memoire qui echoue, mais pourquoi??

mercredi 13 mai 2009 à 14:36:17 | allocation memoire qui echoue, mais pourquoi??

Seomaz

Bonjour,
je pense que le titre est assez explicite...mais je détaille quand même:

lors d'une allocation dynamique (avec l'operateur new), je me retrouve avec un pointeur NULL, alors qu'il me reste plein de place en RAM...

class Bidule
{
...
}

int main()
{
...
  Bidule * ptr = new Bidule();
//et la, ptr = =NULL...
...
}

Je n'arrive vraiment pas à saisir pourquoi new a retourné un pointeur NULL, alors que mon processus prend moins de 20Mo en mémoire et qu'il en reste presque 500Mo.
Je suis sous windows 2000, et je travaille sous Visual C++ 6.0.
D'avance merci pour votre aide.

mercredi 13 mai 2009 à 14:43:11 | Re : allocation memoire qui echoue, mais pourquoi??

Pistol_Pete

Salut
Peux tu nous montrer le constructeur par défaut de ton programme.
A+

____________________________________________________________________________
Mon site internet :
  
[ Lien ]

mercredi 13 mai 2009 à 14:53:20 | Re : allocation memoire qui echoue, mais pourquoi??

Seomaz

bonjour Pistol_Pete.
Le constructeur est très gros, mais il marche.
En fait la classe Bidule appartient à une dll utilisée depuis longtemps (je n'ai pas le droit de la modifier, ni de la divulguer d'ailleurs).
Je ne pense pas que le problème vienne du constructeur parceque des "new Bidule()", yen a déjà un gros paquet dans le code...et tous passent.
Encore une fois je ne pense pas non plus que ça soit un problème de mémoire dispo (yen a encore plein!).

Mais je ne comprend toujours pas pourquoi new me renvoie un pointeur NULL....
En plus je ne peut pas m'en passer. Car le pointeur est retourné à une autre fonction, donc si je met un Bidule statique dont je retourne l'adresse, il n'existera plus!

P.S: avant que quelqu'un me propose de changer de compilo, je ne peut pas. C'est visual C++ 6.0, un point c'est tout (sinon je peut chercher du travail ailleurs...)

mercredi 13 mai 2009 à 15:24:46 | Re : allocation memoire qui echoue, mais pourquoi??

fregolo52

Membre Club

si tu as le code de la dll.debug le constructeur pour voir où ca coince.
mercredi 13 mai 2009 à 15:35:41 | Re : allocation memoire qui echoue, mais pourquoi??

Seomaz

fregolo52,
j'ai déjà débuggé une bonne centaine de fois je pense.
Il ne passe même pas dans le constructeur, l'allocation n'ayant pas réussi... (sinon j'aurai mis "problème de constructeur" dans le titre.)

la question est de savoir quelles sont les causes qui peuvent provoquer l'échec d'une allocation?

sur la msdn il ne disent rien. Ils disent juste que l'opérateur new peut renvoyer NULL, mais ils ne disent pas dans quels cas!!
mercredi 13 mai 2009 à 15:45:24 | Re : allocation memoire qui echoue, mais pourquoi??

fregolo52

Membre Club

encore une question bête, cette dll est déjà utilisée, donc comment elle est utilisée dans les autres programmes ?
As-tu comparé les setting des projets ? Des warning à la compil ou link sont peut-etre intéressants à exploiter.

Pour test : Si tu as Visual .NET qq part, essaie de convertir ton projet, les compilo .NET sont plus restrictifs et permettent de voir certaines grossièretés que VC6 laisse passer.
mercredi 13 mai 2009 à 15:54:38 | Re : allocation memoire qui echoue, mais pourquoi??

Seomaz

aucune différence dans les settings. La même opération d'allocation trois lignes plus haut fonctionne à merveille. C'est là que ça devient incompréhensible!
sinon, pour visual .NET, non. Et comme je l'ai déjà dit, JE N'AI PAS LE DROIT de changer de compilo, ça fait partie des exigences de mon client.
mercredi 13 mai 2009 à 16:43:55 | Re : allocation memoire qui echoue, mais pourquoi??

fregolo52

Membre Club

aie aie aie !!
ca me dit quelque chose !!
c'est déjà eu ce genre de pb avec WSAStartup qui échouait suivant sa position dans le code.

vu que c'était pour un outil de simulation j'ai pas approfondi.

bon courage.
mercredi 13 mai 2009 à 21:43:10 | Re : allocation memoire qui echoue, mais pourquoi??

juju12

Réponse acceptée !
Est-ce-qu'une allocation d'un autre type juste avant ce que tu veux faire, et/ou après, réussit?
du genre :

unsigned *test=new unsigned[2*sizeof(Bidule)];
Bidule*ptr=new Bidule;
unsigned *test2=new unsigned[2*sizeof(Bidule)];

si ça ne marche pas, probablement corruption de la mémoire => vérification de non-dépassement de tous les tableaux, chaînes de caractères, etc utilisés.
jeudi 14 mai 2009 à 02:22:24 | Re : allocation memoire qui echoue, mais pourquoi??

beg0

Question bete: t'as regarde ce que te renvoyer GetLastError(), avant et apres ton alloc ?

1 2

Cette discussion est classée dans : pointeur, allocation, memoire, bidule, echoue


Répondre à ce message

Sujets en rapport avec ce message

Allocation memoire [ par youga ] Bonjour je fais un programme de filtrage d'images en C sur VisualDSP++. J'ai donc une matrice d'entrée et je dois absolument pouvoir determiner l'add allocation efficace de memoire [ par gildaso ] Salut à tous! Alors voila je suis en licence d'informatique et j'ai un projet à rendre  pour la mi-mai.Ce projet consiste à implementer en c un system Pointeur et liberation de memoire [ par Darkneon ] Salut, J'avais un probleme apres que je liberais de la memoire allouer a un pointeur, le message "Null pointer assignment" m'apparaisait toujours. Le [ c ] Allocation memoire [ par Titi035 ] Bonjour, Je recherche quel serait le meilleur allocateur mémoire pour mon appli embarquée. J'ai 10 Mo de RAM + flash à gérer dans un décodeur Prob Allocation dynamique de strcture complexe (contenant des pointeurs) [ par thono42 ] Bonjour, J'ai un petit souci peut être pouvez vous m'aider: J'essaie d'effectuer une allocation dynamique pour le pointeur se trouvnat dans cette stru Ficher Memoire Pointeur [ par maladedede ] Bonjour je voudrais savoir comment mettre un fichier en memoire vive et avoir un pointeur vers l'adresse memoire ou commence le fichier :)Je connais l fonction malloc [ par Trollien ] Salut,j'aurai une question concernant le fonctionnement de l'allocation de memoire en c.Si j'alloue de la memoire avec la fonction malloc(...), est ce allocation de memoire [ par tcok ] salut a tousje voudrais juste savoir quelle est la difference entre LocalAlloc et GlobalAlloc car je dois resever un gros espace en memoire et je me d projet allocation efficace de memoire [ par gildaso ] Salut à tous! Alors voila je suis en licence d'informatique et j'ai un projet à rendre  pour la mi-mai.Ce projet consiste à implementer en c un system Structures en C / Win2k / Dev-Cpp [ par BaptX ] Bonjour à tous,J'aurai quelques questions à vous poser en ce qui concerne le passage de structures en C. Comme c'est un peu comme les pointeurs, je me


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 : 1,435 sec (3)

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