Macro new em c

Estava pensando em vez de ficar usando malloc toda hora criar um macro em c.

#define new (x) ((x*) malloc (sizeof(x)))

Não deu muito certo heheh. Só por curiosidade queria saber se é possível fazer algo assim?

Ola

o seu problema parece ser aqui:

#define new(x) ((x*) malloc (sizeof(x)))

havia um espaço entre o new o e (x)

em algumas ideias aqui: http://vickychijwani.me/simplifying-memory-allocation-in-c/

eu vejo um problema que é: vc vai precisar desse define a cada vez que precisar fazer um malloc ( talvez seja melhor vc criar o seu arquivo header ).

salvo engano, vc pode ter problemas extras se precisar debugar o seu codigo ( acho q vc precisa de alguma opção para expandir o new ) e, no fim das contas, vc esta obfuscando o seu codigo.

sem falar que seu codigo não podera ser compilado em C++ (existe uma compatibilidade) pois havera um clash entre a palavra reservada new e a macro new. se vc quer usar, talvez seja interessante chamar de ALLOC ou CREATE_OBJECT ou algo do tipo, que fique claro o que faz.

1 curtida

Era mais curiosidade mesmo, normalmente eu crio uma função para alocação que chama o malloc e verifica que ele é null.

Curiosidade:
Com Linux + Overcommit o malloc nunca falha.

Até pq existe coisas como o swap, então o que acontece é que se a sua aplicação utilizar muita memoria o OOM Killer vai la e mata o processo.