Malloc.h e MacOs

hamming_burst
Salve, vorrei chiedere a qualcuno il perchè di questo problema.

Compilando un programma in MacOs, sviluppato in ambiente Linux in linguaggio C, che include la libreria malloc.h, in MacOs risulta il seguente errore:

error: malloc.h: No such file or directory

compilato con gcc.

La risoluzione che ho pensato e che è stata confermata in giro per la rete, ho decommentato malloc.h e usato la funzione implementata in stdlib.h dello standard C (che già era inclusa per altre funzioni).
Non ho modo di sapere se la soluzione è corretta, ma sembrerebbe di si.

La cosa che chiedo è il perchè la funzione malloc.h non è portabile in ambienti come MacOS che cmq al suo interno ha un ambiente Unix, forse perchè malloc.h è di uno standard C (Ansi C, C99) diverso da quello Unix di MacOS?


Grazie a chi risponde,i in giro per la rete non danno risposte precise, ma solo risoluzioni al problema.

Risposte
Rggb1
Per quel che ne so e mi ricordo:
- malloc, calloc e le altre sono in stdlib
- nelle librerie GNU C c'è una ridefinizione delle funzioni, contenute in malloc.h

quindi hai bisogno delle librerie GNU (oltre che di gcc). Dovrebbero funzionare anche su mac, nonostante il kernel sia differente da linux e quindi la gestione memoria sia fatta in maniera differente (non molto in verità ma abbastanza perché il modello sia considerato diverso).

Curiosità: che programma?

Luc@s
mi posteresti il risultato del comando "gcc -v" messo su una console?

apatriarca
malloc.h NON fa parte dello standard C (nessuna versione) ed è pertanto non portabile. Esisteva precedentemente alla standardizzazione, ma non dovrebbe essere usata perché deprecata (e comunque non inclusa in molti sistemi). Le sue funzionalità sono incluse nell'header stdlib.h.

hamming_burst
Grazie delle risposte.
Adesso capisco, ne ero del tutto all'oscuro che malloc.h era una header deprecato, per progetti futuri meglio non includerlo.

Davvero Grazie.

#Luc@s
non posso dirti la versione del gcc perchè il compilatore è del sistema Mac del docente del corso. Il codice era per un progetto di metà semestre e mi è stato detto da lui tale errore.
Secondo te un gcc più "vecchio" lo avrebbe compilato senza problemi?
Ma sicuramente è per il motivo detto da "apatriarca".

Luc@s
diciamo che alcune versioni "vecchie" non avevano questo "problema".

apatriarca
Il problema non riguarda il compilatore, ma le librerie ad esso associate. Un compilatore può in effetti usare librerie standard diverse da quelle con le quali è normalmente distribuito (per esempio questa). L'header malloc.h è in effetti incluso in molti sistemi per motivi di retro-compatibilità. Credo sia in effetti ancora presente su alcuni sistemi anche usando l'ultima versione di gcc (anche se non ho avuto modo di provare). Sui sistemi Mac hanno probabilmente motivo che non era necessario includerlo.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.