begin process at 2010 03 17 07:45:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

Optimisation memcpy


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

Optimisation memcpy

mardi 20 mars 2007 à 16:18:24 | Optimisation memcpy

cedoli

Bonjour à tous
Est-il possible de faire ce que je fais en trois ligne, en une ligne ?
Donc je remplis mon array en 2 lignes puis je l'envois en arguments d'une fontion.

memcpy(&sendData,&lonmsg, sizeof(lonmsg));
memcpy(&sendData[sizeof(lonmsg)],&inout, sizeof(inout));
fill_send_msg(&sendData, sizeof(lonmsg)+sizeof(inout));


Merci d'avance :)
mardi 20 mars 2007 à 22:55:40 | Re : Optimisation memcpy

hisoka67

Réponse acceptée !
Non. (C'est pas très constructif je sais, mais quand tu veux concaténer plusieurs buffers il faut faire plusieurs memcpy, c'est comme ca)
mardi 20 mars 2007 à 23:21:18 | Re : Optimisation memcpy
mercredi 21 mars 2007 à 01:57:48 | Re : Optimisation memcpy

SAKingdom

Membre Club
Moi, je comprend rien à ton code:

memcpy(&sendData,&lonmsg, sizeof(lonmsg)); ???????????

& signifie que tu donne l'adresse de la variable. Il ne s'agit donc pas d'un pointeur je me trompe ? Dans ce cas, pourquoi utiliser memcpy ? Bien plus simple de faire sendData = lonmsg;

Ensuite, tu fais:
memcpy(&sendData[sizeof(lonmsg)],&inout, sizeof(inout));
Oulalalalalalala mais c'est quoi ça ?
&sendData[sizeof(lonmsg)]. Ça compile ça ? J'ai jamais essayé de faire ça. Quoi qu'il en soit, ça veut dire que tu va à l'emplacement de sendData et que tu te déplace dans la mémoire de +sizeof(lonmsg) pour y ajouter inout. Ça sens le crash à plein nez ça.

D'après moi, sendData, lonmsg et inout sont des pointeurs c'est bien ça ? N'oublie pas qu'un pointeur pointe sur une adresse. & est donc inutile car tu te trouve à donner l'adresse du pointeur même (ce qui n'est pas très conseillé). Ce que tu veux donc faire devrais ressembler à ceci:

memcpy(sendData, lonmsg, strlen(lonmsg)); //<- strlen c'est seulement si il s'agit d'une chaine de caractère

Pour le memcpy(&sendData[sizeof(lonmsg)],&inout, sizeof(inout)), là j'ignore complètement ce que tu veux faire.

Si tu n'a rien compris de ce que j'ai dit: soit j'explique très mal, soit c'est trop avancé pour toi. Si les pointeurs sont encore trop avancés pour toi, replonge toi dans le livre de C et essais de bien métriser tout ce qui touche aux pointeurs. Un pointeur mal utilisé c'est comme une allumette à coté d'un baton de TNT... dans les deux cas, ça risque de faire BOOOOOOOOM!!!!

Bonne continuation.

C++ (@++)

mercredi 21 mars 2007 à 09:49:01 | Re : Optimisation memcpy

cedoli

bon pour commencer j'ai oublier de préciser un truc : il s'agit de neuron c : programation de microcontrolleur neuronchip.
lonmsg et inout sont des structures : c'est pourquoi j'utilise & afin de pointer vers leur adresse en mémoire.
Sendata est un array de byte.

Lorsque je fais &sendData[sizeof(lonmsg)] c'est pour me déplacer dans senddata, apres la taille de lonmsg pour ne pas 'écraser.

Voila :)

mercredi 21 mars 2007 à 16:08:21 | Re : Optimisation memcpy

SAKingdom

Membre Club
Aaaaaaaaaaaah bon. Là c'est plus clair en effet.

C++ (@++)



Cette discussion est classée dans : senddata, sizeof, memcpy, lonmsg, inout


Répondre à ce message

Sujets en rapport avec ce message

probleme avec memcpy(); [ par LaTatadu91 ] Bonjour a tous ,je viens m'adresser a vous en dernier recours car je rencontre actuellement un probleme avec mon appli Cqui me dépasse largement.Voila probleme avec les socket et le SMTP [ par simsim_14 ] Bonjourdonc voila j'ai un probleme . Je me suis mis a programmer depuis pas longtemps donc il y as encore certains points que je connais pas parfaitem probleme de send en C avec socket [ par thorn74 ] bonjour je suis actuellement en IUT info et G un  projet a faire mais je bloque je doit fair eun petit programme ou lorsqu'un ordinateur se connecte a Ouvrir un fichier [ par ndubien ] Bonjour,Comment récupérer le nom des fichiers ouverts avec :ZeroMemory(&ofn, sizeof(OPENFILENAME));ofn.lStructSize = sizeof(OPENFILENAME);ofn.hwndOwne Problème avec memcpy [ par beautycanz ] Voici mon problème.Je voudrais recopier l'intégralité d'un tableau de strucure (Atelier).Voici la déclaration de cette structure :typedef struct { Cha a propos de SNPRINTF [ par xtremejames183 ] Simple question stupide a propos de snprintf{    char   nom[40];    snprintf(nom,sizeof(nom),"votre nom est %s",nom);< Winsock2 et Wifi [ par djin94 ] Bonjour,Je programme sous Visual C++ et je souhaite établir une connection UDP entre deux pc via une liaison Wifi. J'ai essayé avec Winsock2 mais ca n sizeof( void* ) / sizeof( int ) sur processeur 64 bit [ par KeniiyK ] Bonsoir,Si quelqu'un a un processeur 64 bit, peut il me dire si l'adressage est sur 32 bits ou sur 64 bits ?Que valent les renvoies de sizeof( int ) e Que vaut sizeof(long) ? [ par fregolo52 ] Bonjour,J'ai cherché sans succès. Je voudrais tester la taille d'un long à la compilation. Je n'ai pas trouver de variable de compilation qui aurait c Probleme allocation dynamique [ par totoscill ] Bonjour,Je veux allouer de la mémoire dynamiquement pour 4 tableaux à 2 dimensions mais lors de l'éxécution, le test m'informe que l'allocation est im


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

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 : 0,484 sec (3)

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