fork download
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <stdint.h>
  4.  
  5. typedef struct _my_t {
  6. uint32_t m;
  7. } my_t;
  8.  
  9. my_t* my_allocate() {
  10. my_t *m = malloc(sizeof(my_t) + sizeof(int));
  11.  
  12. return m;
  13. }
  14.  
  15. void my_set(my_t *m, int v) {
  16. int *i = (int*) (((char*)m) + sizeof(my_t));
  17.  
  18. *i = v;
  19. }
  20.  
  21. int my_get(my_t *m) {
  22. return *(int*) (((char*) m) + sizeof(my_t));
  23. }
  24.  
  25. int main(int argc, char **argv) {
  26. my_t *m = my_allocate();
  27.  
  28. m->m = 1;
  29.  
  30. my_set(m, 10);
  31.  
  32. printf("get: %d\n", my_get(m));
  33.  
  34. my_set(m, 20);
  35.  
  36. printf("get: %d\n", my_get(m));
  37.  
  38. free(m);
  39. return 0;
  40. }
  41.  
Success #stdin #stdout 0s 5420KB
stdin
Standard input is empty
stdout
get: 10
get: 20