begin process at 2012 02 12 19:24:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Operateur new allocation new


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

Operateur new allocation new

mardi 27 décembre 2005 à 15:34:47 | Operateur new allocation new

yserver

Bonjour, je cherche un peu d'aide pour cette modeste class.
Telle quelle est présenté la elle génère une erreur  lors de l'execution (ligne signalés dans la classe.


class
CRepertoire
{
public:
        char * cNomRepertoire; //Avec char * cNomRepertoire aucun problème (je suprime la ligne new dans le constructeur)
        unsigned long ulNbReps;
        unsigned long ulNbFichiers;
        unsigned long ulTailleMo;
        CRepertoire(char * cRepertoire = "c:");
        ~CRepertoire(void);
        void ScanRep(char *cRepertoire);
};
CRepertoire::CRepertoire(char * cRepertoire)

{ 
    char * cNomReperoire = new char[strlen(cRepertoire)]; //Ligne qui pose problème
    *cNomRepertoire = "" 
    strcpy(cNomRepertoire, cRepertoire); 
    ulNbReps = 0; 
     ulNbFichiers = 0; 
     ulTailleMo = 0; 
    ScanRep(cNomRepertoire);
}
Pourquoi cette ecriture n'est pas correcte.
Merci

mardi 27 décembre 2005 à 15:39:05 | Re : Operateur new allocation new

yserver

désolé pour la mise en forme (problème de copier coller)
mardi 27 décembre 2005 à 15:48:49 | Re : Operateur new allocation new

ekinox17

Donne nous l'appel de ton constructeur car on connait pas la valeur que tu as donner à cRepertoire en general les erreur a l'execution ça vient des pointeur NULL (non initialisé)
Verifie que le paramètre de ton constructeur est bien un char* .

C U Later
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 + 1 = 1, c'est l'harmonie parfaite (citation de J-C Van-Dame)
Vive la logique: 1 ou 1 ça fait bien 1 : pas si fou que ça JC ;)


mardi 27 décembre 2005 à 15:57:07 | Re : Operateur new allocation new

vecchio56

Administrateur CodeS-SourceS
*cNomRepertoire = "" Ca passe à la compilation ce truc?
mardi 27 décembre 2005 à 16:07:01 | Re : Operateur new allocation new

yserver

non pardon cNomRepertoire ="" passe a la compilation mais pas a l'execution c'etait a des fin de test
Je reformule donc :
class CRepertoire
{
public: 
   char * cNomRepertoire; //Avec char * cNomRepertoire aucun problème (je suprime la ligne new dans le constructeur)
        unsigned long ulNbReps;
        unsigned long ulNbFichiers;
        unsigned long ulTailleMo;
        CRepertoire(char * cRepertoire = "c:");
        ~CRepertoire(void);
        void ScanRep(char *cRepertoire);
};
CRepertoire::CRepertoire(char * cRepertoire)

   char * cNomReperoire = new char[strlen(cRepertoire)]; //Ligne qui pose problème

   strcpy(cNomRepertoire, cRepertoire); 
   ulNbReps = 0; 
   ulNbFichiers = 0; 
   ulTailleMo = 0; 
   ScanRep(cNomRepertoire);
}

Et je l'appel ainsi CRepertoire CRepSource (cFileName);
J'ai controlè l'argument cFileName, il est correct puisque avec cette ecriture ca passe :
char cNomReperoire[512];
mercredi 28 décembre 2005 à 00:11:45 | Re : Operateur new allocation new

luhtor

Le strlen ne prend pas en compte le caractère nul, donc faut rajouter une case à ton tableau de caractère.
new chat[strlen(cRepertoire)+1];

Mais pourquoi se faire.... avec des char* alors que le C++ offre des string ^^
mercredi 28 décembre 2005 à 06:41:59 | Re : Operateur new allocation new

yserver

J'avais essayé avec new chat[strlen(cRepertoire)+1];
Meme résultat. Je vais revoir tout ca. Merci
mercredi 28 décembre 2005 à 09:18:09 | Re : Operateur new allocation new

nightlord666

Membre Club
L'erreur vient du fait que tu redeclare ta variable cNomRepertoire. Tu lui dit de créer une variable qui existe deja, donc sa pose probleme... met plutot sa : this->cNomRepertoire = new char[strlen(cRepertoire) + 1]; Le probleme ne vient donc pas du tout du new...
mercredi 28 décembre 2005 à 09:19:23 | Re : Operateur new allocation new

nightlord666

Membre Club
Sa m'etonne d'ailleur que personne n'y ait pensé... Tout le monde regardait l'allocation, mais pas le reste de la ligne...
mercredi 28 décembre 2005 à 11:44:01 | Re : Operateur new allocation new

luhtor

NightLoad -> ya aucun problème de ce coté la. Ou vois tu une variable deja déclarée ? De toute facon, "this" est facultatif. Perso, il rend le code plus lisible, mais c'est une question de gout :)

Sinon voila la solution.
char * cNomRepertoire = new char[strlen(cRepertoire)+1]; //Ligne qui pose problème
memset(cNomRepertoire, 0,
strlen(cRepertoire)+1);
strcpy(cNomRepertoire, cRepertoire);


Sinon que fait la fonction scanrep ?

1 2

Cette discussion est classée dans : ligne, char, unsigned, crepertoire, cnomrepertoire


Répondre à ce message

Sujets en rapport avec ce message

pb avec conio je cher cherche l'erreur( j'ai merde sur le mess precedent) [ par kin ] portpia.cpp#include"PortPiaPc.h"void main(){ PortPiaPc inst; inst(0x320,0x0f);}PortPiaPc.cpp#include "PortPiaPc.h"#include "conio.h"PortPiaPc::PortPia Comment concertir Ansistring en unsigned char*????? [ par asik38 ] Ansistring x;unsigned char str[100];str[100]=x;??????Merci!!! Pointeurs sur des tableaux de plusieurs dimensions [ par ProGamer ] J'ai besoin de faire des pointeurs sur ce genre de tableaux. Voici comment je m'y prends (et surtout, voici comment ça ne marche pas...):unsigned char conversion [ par coyotedef ] salut!!lors de la compilation de mon code une erreur apparait. impossible de trouver un remede. "cannot convert parameter 1 from 'char [10]' to 'char' char* to unsigned char* [ par rodrigos ] comment peut-on convertir un char* en unsigned char*?à quoi correspond un unsigned char*?Merci pour votre aide!! pb avec variable [ par jeffise57 ] Please aidez moiJe reçoit comme arugument du fonction des variables unsigned char* et je doit passer dans une deuxième fonction les même arguments mai Parametre sur la ligne de commande [ par payen ] Salut a tous,j'ai un petit souci en C++ ...alors voila : j'ai ecrit un code qui prend comme parametres sur la ligne de commande 2 entiers. Ensuite, pl struct [ par ready4 ] Je ne sais pas comment initialiser mes moteurs //intialisation moteursM1 = {2, 1, 1, 2, 0, 0, 120};M2 = {8, 4, 4, 8, 0, 0, 80};M3 = {32, 16, 16, 32, 0 probléme d'écriture fichier [ par phoenixadb ] phoenixadbJ'ai un problème sur une fonction que je n'arrive pas à résoudremon nom de fichier est test.txtet ma fonction:void ecriturefichier(char* nom Newbie Erreur en C sous JBuilder c++ 6 [ par MrNo ] salut je suis en trainde reprendre un programme existant en c sous cbuilder qui marchai t avant mais j'aides erreur a la compilationvoici mon code sur


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 10,951 sec (4)

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