Files
memory-models/scope-count.c
T
2026-05-13 23:53:12 +02:00

55 lines
755 B
C

#include <stdio.h>
#include <stdlib.h>
struct ScopeCount
{
int count;
int is_alias;
void *item;
};
struct ScopeCount scope_count(void *item)
{
struct ScopeCount sc;
sc.count = 0;
sc.is_alias = 0;
sc.item = item;
return sc;
}
void end_scope(struct ScopeCount *sc)
{
if (sc->count == 0)
{
free(sc->item);
}
sc->count--;
}
struct ScopeCount do_something()
{
struct ScopeCount sc = scope_count((void *)malloc(sizeof(int)));
*(int *)sc.item = 67;
sc.count = 1;
end_scope(&sc);
return sc;
}
int main()
{
struct ScopeCount sc = do_something();
printf("value: %d\n", *(int *)sc.item);
end_scope(&sc);
printf("value: %d\n", *(int *)sc.item);
return 0;
}