Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Alessandro Pellizzari Newsgroups: it.comp.os.linux.development Subject: Re: Spreco di memoria e minaccia alla sicurezza Date: Tue, 13 Jun 2017 10:16:03 +0100 Lines: 27 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: individual.net bq26zPPXm8wZqydbMcY92Ai61BJaUT7UdZKl0uK29tQtXK6oI= Cancel-Lock: sha1:PNAr/3/+d2bGguSg/bLz6UwVhUM= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 In-Reply-To: Content-Language: en-US Xref: csiph.com it.comp.os.linux.development:73 On 13/06/17 08:28, guido84 wrote: > Questo l'ho trovato fatto, devo capire ancora il ruolo delle > tonde (char *) prima di malloc(), malloc torna un (void *) (un puntatore generico) Mettendo (char *) prima forzi il compilatore a gestirlo come un puntatore a char, abilitando check e ottimizzazioni aggiuntive. > e anche le doppie parentesi > di if, spero-penso che siano come per la bash: Non sono doppie parentesi. Stai raggruppando un'assegnazione (stringa = malloc()) prima di confrontarla con null. Per chiarezza e` meglio "esplodere" il comando cosi`: char *stringa = (char *)malloc(2147483647); if (stringa == null) { ... } Ochio che stai allocando 2GB di memoria, con quella riga. Funziona solo perche` Linux non alloca veramente la memoria finche` non ci scrivi sopra, ma altri S.O. potrebbero allocarla veramente anche se non ti serve. Bye.