#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
typedef struct _my_t {
uint32_t m;
} my_t;
my_t* my_allocate() {
my_t
*m
= malloc(sizeof(my_t
) + sizeof(int));
return m;
}
void my_set(my_t *m, int v) {
int *i = (int*) (((char*)m) + sizeof(my_t));
*i = v;
}
int my_get(my_t *m) {
return *(int*) (((char*) m) + sizeof(my_t));
}
int main(int argc, char **argv) {
my_t *m = my_allocate();
m->m = 1;
my_set(m, 10);
printf("get: %d\n", my_get
(m
));
my_set(m, 20);
printf("get: %d\n", my_get
(m
));
return 0;
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGludC5oPgoKdHlwZWRlZiBzdHJ1Y3QgX215X3QgewoJdWludDMyX3QgbTsKfSBteV90OwoKbXlfdCogbXlfYWxsb2NhdGUoKSB7CglteV90ICptID0gbWFsbG9jKHNpemVvZihteV90KSArIHNpemVvZihpbnQpKTsKCQoJcmV0dXJuIG07Cn0KCnZvaWQgbXlfc2V0KG15X3QgKm0sIGludCB2KSB7CiAgICBpbnQgKmkgPSAoaW50KikgKCgoY2hhciopbSkgKyBzaXplb2YobXlfdCkpOwogICAgCiAgICAqaSA9IHY7Cn0KCmludCBteV9nZXQobXlfdCAqbSkgewogICAgcmV0dXJuICAqKGludCopICgoKGNoYXIqKSBtKSArIHNpemVvZihteV90KSk7Cn0KCmludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewoJbXlfdCAqbSA9IG15X2FsbG9jYXRlKCk7CgkKCW0tPm0gPSAxOwoJCglteV9zZXQobSwgMTApOwoJCglwcmludGYoImdldDogJWRcbiIsIG15X2dldChtKSk7CgkKCW15X3NldChtLCAyMCk7CgkKCXByaW50ZigiZ2V0OiAlZFxuIiwgbXlfZ2V0KG0pKTsKCQoJZnJlZShtKTsKCXJldHVybiAwOwp9Cg==