begin process at 2012 02 11 01:30:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Allocation de mémoire a une structure


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

Allocation de mémoire a une structure

mardi 6 janvier 2009 à 14:34:14 | Allocation de mémoire a une structure

KurpeusLondon

Bonjour,

J'essaye d'initialiser des structures par un appel de fonction qui retourne l'adresse mémoire de la structure fraichement crée. Lorsque je compile, l'execution crash m'indiquant que j'essaye d'écrire à l'adresse mémoire 0x0000000000.  voici le code :

=======================================================
Déclatation
=======================================================
struct sData{          // structure globale
    char label[16];
    unsigned int value;
    unsigned int slaveAddr; /* Modbus communication use addr "0" to broadcast and 1 to 247 to address a node. 248 to 255 are reserved addresses. To be convert in Hex */
                  /* According to the ATI100 transfer panel, broadcast adresse only usable for writing functions (6 and 16). */
    unsigned int functCode;
    unsigned int addr;
    unsigned int data;
    unsigned int crc16;/* ModBus define two function to compute the CRC : RTU and ASCII. ATI100 use RTU */
};
*
char * label = NULL; // variable déclarée dans le main puis initialiser
label = tableLabel[idReq]; // Un tableau à deux dimensions qui contient des chaines de caractères


struct sData * createStruct(unsigned int code, char * label){
    struct sData * pSubStruct = (struct sData*) malloc( sizeof(struct sData*));
    pSubStruct->label = label;
    pSubStruct->addr = code;
    pSubStruct->slaveAddr = 0x05;
    pSubStruct->functCode = 0x03;
    pSubStruct->data = 0x02;
    pSubStruct->crc16 = NULL;
    return &pSubStruct;
};


Dans la fonction createStruct( ) je peux vérifier que le contenu de label pointe bien sur la la case de mon tableau. Cependant je n'arrive pas a faire rentrer mon label dans ma structure. je dois dire que j'ai du mal a comprendre les déréférencements et valeurs pointées lorsque qu'il s'agit de structure

Merci
mardi 6 janvier 2009 à 18:45:45 | Re : Allocation de mémoire a une structure

ed73

Réponse acceptée !
Remplace malloc( sizeof(struct sData *)); par  malloc( sizeof(struct sData)); 
et return &pSubStruct; par return pSubStruct;




mardi 6 janvier 2009 à 19:31:23 | Re : Allocation de mémoire a une structure

Neo_Fr

Membre Club
"pSubStruct->label = label;"
Pour copier une chaine dans une autre tu doit utiliser strcpy

En resumant ca donne ca:

typedef struct _sdata
{
    char label[16];
    UINT value;
    UINT slaveAddr;
    UINT functCode;
    UINT addr;
    UINT data;
    UINT crc16;
}SDATA, *LPSDATA;

LPSDATA __stdcall CreateStruct(DWORD dwCode, LPSTR lpszLabel)
{
    LPSDATA lpsData = (LPSDATA) HeapAlloc(GetProcessHeap(), 0, sizeof(SDATA));
    if(!lpsData) return 0;
    strcpy(lpsData->label, label);
    lpsData->addr = dwCode;
    lpsData->slaveAddr = 0x05;
    lpsData->functCode = 0x03;
    lpsData->data = 0x02;
    lpsData->crc16 = NULL;
    return lpsData;
}

Neo_Fr


Cette discussion est classée dans : label, int, to, unsigned, psubstruct


Répondre à ce message

Sujets en rapport avec ce message

Convertion c++ à VB [ par jnbrunet ] Bonjours,Je ne suis pas très connaissant en c++.Est-ce que quelqu'un pourrait me traduire cette fonction en Visual Basic 6.0 ou .NET.P.S.: le pucData unsigned to int [ par wislam2007 ] Salut j'ecrit dans mon code : string a="machin"; int taille = a.length(); ça passe pas : erreur c2440 :error unsignet to int :( merci pr l aide. A v code ascii [ par tasken2 ] bonjour à tous  et merci d'avoir cliquez sur moi .Alors voila j'ai un probleme pour récuperer la valeur du code ascii dun caractere speciaux mais le r Envoie de données vers un serveur en langage C [ par esmee ] Bonjour,Besoin d'aide,Débutant en programmation , j'aimerai  modifié ce code ci-dessous qui fonctionne bien :write(to_server_socket,"Momo",15);read(to control de ma camera [ par brico07 ] bonjour,je suis débutante, et j'aimerais controller ma camera  (MTV 54g10), mais je suis coincé À tout les bouts.le sequence de communication est:cont OpenGl bloqué par une Thread !? [ par spinzero ] Bonjour  J'ai une animation (win32) OpenGL à laquelle j'essaie d'intégrer de la synthese sonore avec la lib STK.(...a String to Char puis Char to Int puis Int to Char puis Char to Int [ par gooooo ] Bonjour, Je débute avec Visual C++ et j'avoue que j'ai un peu de mal. Habituellement j'utilise Qt et la il y a du changement. Voici le problème : J SDL et windows.h sous sygwin [ par agent933 ] salut je travaille en ce moment sur un programme en langage.grosso modo jutilise le port serie pour recevoir donnees et ensuite utilise une interface Programmation C : 2 unsigned char dans 1 unsigned int. [ par romain60112 ] Bonjours a tous, J'ai un petit soucis pour stocker 2 unsigned char dans 1 unsigned int. Je dispose de : un tableau d'unsigned int : unsigned int con convertsion int en unsigned char [ par avg ] Salut tout le monde j'ai une souci pour convertir un int en unsigned char[] voir le code c++ qui affiche l'erreur [code=cpp]int a=100; unsigned char


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 2,933 sec (4)

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