Je voudrais copier 4 octets de unsigned int vers un tableau char non signé. Une fois exécuté la fonction suivante get_result
va à la segmentation faute:memcpy unsigned int à unsigned char segmentation fault
int exec_cmd(unsigned int * apu32Var)
{
int ret = -1;
char cmd[100] = { 0 };
char resp[100] = { 0 };
sprintf(cmd, "%s %s", "/home/send_frames.sh", "read");
ret = exec_cmd_ret_result(cmd, resp);
if(apu32Var != NULL)
{
*apu32Var = (((unsigned int)resp[0]) <<24)+(((unsigned int)resp[1]) <<16)+(((unsigned int)resp[2]) <<8)+(unsigned int)resp[3];
}
return ret;
}
int get_result(unsigned char * buffer, unsigned short * size)
{
unsigned int u32Var = 0;
exec_cmd(&u32Var);
memcpy(buffer, &u32Var, sizeof(unsigned int));
*size += sizeof(unsigned int);
return 0;
}
int main(int argc, char **argv)
{
unsigned char *buf;
unsigned short *size;
get_result(buf+4, size);
return 0;
}
Cependant, en ce qui concerne à la page man memcpy() il semble memcpy() sont bien gérées. Qu'est-ce qui ne va pas?
Vous ne nous montrez pas la partie où 'Test_result' est appelée. Et que dit votre débogueur? –
@ M.M Désolé, j'ai inclus plus de détails dans la question – ogs
Quel est le nom du compilateur sous-standard qui ne vous avertit pas que 'buf' est utilisé non initialisé dans' main() '? – Jens