Advertisement
techno-

P2 memfill

Nov 18th, 2022
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.60 KB | None | 0 0
  1. void LlenarMemoria (void *p, size_t cont, unsigned char byte)
  2. {
  3.   unsigned char *arr=(unsigned char *) p;
  4.   size_t i;
  5.  
  6.   for (i=0; i<cont;i++)
  7.         arr[i]=byte;
  8. }
  9.  
  10. void cmdMemfill(){
  11.     char A='A';
  12.     int Bytes=128;
  13.     int *p,i;
  14.    
  15.     if(numtrozos==1){
  16.         return;
  17.     }if(numtrozos>2){
  18.         Bytes=atoi(trozos[2]);
  19.     }
  20.     if(numtrozos>3){
  21.         A=trozos[3][0];
  22.         }
  23.     if(nbloq!=0 || nshared!=0){
  24.     if(nbloq!=0){
  25.     char comp[20];
  26.         sprintf(comp,"%p",histBloqElemento(0)->dir);
  27.        
  28.         for(i=0;i<nbloq && strcmp(comp,trozos[1])!=0 ;i++){
  29.             if(i!=nbloq-1){
  30.             sprintf(comp,"%p",histBloqElemento(i+1)->dir);
  31.             }
  32.         }
  33.            
  34.     }
  35.         if(i<nbloq && nbloq!=0){
  36.             p=histBloqElemento(i)->dir;
  37.             if(histBloqElemento(i)->Bytes<Bytes){
  38.                 printf("Violacion de segmento generado\n");
  39.                 exit(0);
  40.             }
  41.          
  42.        
  43.         }else if(nshared!=0){
  44.             char comp2[20];
  45.             sprintf(comp2,"%p",histSharedElemento(0)->dir);
  46.            
  47.             for(i=0;i<nshared && strcmp(comp2,trozos[1])!=0 ;i++){
  48.                 if(i!=nshared-1){
  49.                 sprintf(comp2,"%p",histSharedElemento(i+1)->dir);
  50.                 }
  51.             }
  52.            
  53.             if(i<nshared){
  54.                 p=histSharedElemento(i)->dir;
  55.                 if(histSharedElemento(i)->Bytes<Bytes){
  56.                 printf("Violacion de segmento generado\n");
  57.                 exit(0);
  58.                 }
  59.             }else{
  60.                 printf("Violacion de segmento generado\n");
  61.                 exit(0);
  62.                 }
  63.                
  64.         }else{
  65.                 printf("Violacion de segmento generado\n");
  66.                 exit(0);
  67.                 }
  68.                
  69.         }else{
  70.                 printf("Violacion de segmento generado\n");
  71.                 exit(0);
  72.                 }
  73.    
  74.        
  75.     printf("Llenando %d bytes de memoria con el byte %c(%02x) a partir de la direccion %p\n",Bytes,A,A,p);
  76.     LlenarMemoria(p,Bytes,(unsigned char)A);
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement