Salut,
C'est plus du C que du C++.
Supposons que tes pointeurs sont bons et qu'ils pointent sur une zone effectivement allouée.
	Code:
	
unsigned char pb[36];
 Tu déclares un tableau de 36 caractère sur la pile. Ce tableau commence à l'adresse 
pb ou 
&(pb[0]). 
&pb c'est l'adresse de la variable 
pb et non du tableau qu'il contient. Donc, il est fort à parier que la ligne :
	Code:
	
fonction((BYTE*)&pb);
 n'est pas correcte et que ça devrait être :
D'autre part :
	Code:
	
memcopy((*par)[i],pb,36);
 suppose que par par est un pointeur sur un tableau avec au moins i+1 éléments de type tableau sur char d'au moins 36 caractères. Tout cela m'a l'air très bancal et je ne peux que te conseiller de revoir tes modèles de données.