- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
#include <stdio.h>
#include <stdlib.h>
void myfree(void *ptr)
{
printf("%p\n", *(void **)ptr);
free(*(void **)ptr);
printf("freed!\n");
}
int main(void) {
char *x __attribute__ (( cleanup (myfree) )) = malloc(1);
printf("%p\n", x);
return 0;
}
j123123 09.04.2019 10:17 # 0
https://stackoverflow.com/questions/2053029/how-exactly-does-attribute-constructor-work
bootcamp_dropout 09.04.2019 10:25 # 0
j123123 09.04.2019 10:32 # +2
Ну т.е. в функцию void myfree(void *ptr) передается указатель на x. Можно переписать как-нибудь вот так:
bootcamp_dropout 10.04.2019 09:19 # 0
BOKCEJIbHblu_nemyx 10.04.2019 09:53 # +1
bootcamp_dropout 10.04.2019 10:14 # 0
BOKCEJIbHblu_nemyx 10.04.2019 10:36 # +1
bootcamp_dropout 10.04.2019 12:51 # 0
BOKCEJIbHblu_nemyx 10.04.2019 13:06 # +1
bootcamp_dropout 10.04.2019 14:39 # 0
gost 10.04.2019 10:32 # 0
BOKCEJIbHblu_nemyx 10.04.2019 10:48 # 0
The function must take one parameter, a pointer to a type compatible with the variable.
gost 10.04.2019 11:11 # 0
bormand 09.04.2019 12:45 # 0
BOKCEJIbHblu_nemyx 09.04.2019 13:26 # 0
j123123 09.04.2019 15:50 # 0
j123123 09.04.2019 15:51 # +1
Или даже сделать чтоб:
#define MK_ARR(type, name, mallocfunc, freefunc, ...)
Чтоб кастомный аллокатор
j123123 10.04.2019 08:24 # +1
Улучшил
gost 10.04.2019 09:22 # 0
Какой ____ )))
BOKCEJIbHblu_nemyx 10.04.2019 09:54 # 0
j123123 10.04.2019 08:57 # 0
BOKCEJIbHblu_nemyx 09.04.2019 13:23 # 0
j123123 09.04.2019 14:34 # 0
BOKCEJIbHblu_nemyx 09.04.2019 15:01 # 0
BOKCEJIbHblu_nemyx 09.04.2019 16:30 # 0
OlegUP 10.04.2019 09:03 # 0
Это туда входит?
j123123 10.04.2019 09:12 # 0
BOKCEJIbHblu_nemyx 10.04.2019 09:54 # 0