Следующее приложение работает как с закомментированным malloced int, так и при использовании указателя int для указания на локальный int 'a.' Мой вопрос в том, можно ли обойтись без malloc, потому что я думаю, что int 'a' выходит за рамки, когда функция doit возвращается, оставляя int * p ни на что. Не отличается ли программа от сбоев от ее простоты или это нормально? неТребуется ли malloc для этого примера int pointer?
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
typedef struct ht {
void *data;
} ht_t;
ht_t * the_t;
void doit(int v)
{
int a = v;
//int *p = (int *) malloc (sizeof(int));
//*p = a;
int *p = &a;
the_t->data = (void *)p;
}
int main (int argc, char *argv[])
{
the_t = (ht_t *) malloc (sizeof(ht_t));
doit(8);
printf("%d\n", *(int*)the_t->data);
doit(4);
printf("%d\n", *(int*)the_t->data);
}
[Не набрасывать результат 'malloc()'] (http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) –