Salve,
sto' cercando di scrivere un programmino ma purtroppo mi ritrovo con questa difficolta':
non riesco a trovare il modo per scrivere/modificare singoli bit all'interno di un blocco di memoria allocato con malloc().
Riporto quanto fatto:
Codice PHP:
  #include <stdlib.h>
#include <stdio.h>

main () {
// funzione per stampare i bits di un intero
  
void printbits(unsigned x){
    if (
x==0printf("0");
    else 
printbits(x>>1);
      
printf("%d",x&1);
  }

/* bitcount: count 1 bits in x */
int bitcount(unsigned x)
{
    
int b;
    for (
0!= 0>>= 1)
        
b++;
    return 
b;
}

// Funzione per settare ad 1 tutti i bit dell'intero passato come argomento
int setbitOn(int x)
{
 for (; 
!= 0>>= 1
    
1;
    return 
x;
}

  
int  *A;
  
= (int *) malloc(20);
  
printf("Garbage Contents: %d %d\n"Asizeof(A) );
  
printf("Bits di A: ");
  
printbits(A);            //stampa 0
  
printf("\n");
  
printf("Numero di bits in A: %d\n",bitcount(A));   //stampa 28!!
  
printf("Bits di A dopo setbitOn(): ");
  
printbits(setbitOn(A));
  
printf("\n");
  
printf("Garbage Contents(2): %d %d\n"Asizeof(A) );
  
printf("\n");
  
free(A);

Il problema e' nella funzione setbitOn() che dovrebbe mettere ad 1 tutti i bit del blocco passato, ma che in realta' sembra non fare nulla!
Un altra cosa, ma se io ho allocato un blocco di memoria da 20 bytes puntato da *A, come e' possibile che quando vado a contare i bits contenuti in A ottengo 28??...non dovrei ottenere 160 bits??

Grazie mille!!