Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C] Riallocare o azzerare? calloc versus for

    1)Per matrici di grandi dimensioni quale è secondo voi la più conveniente?
    P.S.
    Le matrici sono bidimensionali.


    2)Volevo poi sapere se le variabili di una struttura sono di default inizializzate a 0.

    Grazie.

  2. #2
    1) Non ho capito... :master:
    2) No, come tutte le variabili, i membri delle strutture non vengono inizializzati. L'unica eccezione si ha quando la variabile-struttura è una variabile globale.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Originariamente inviato da MItaly
    1) Non ho capito... :master:
    2) No, come tutte le variabili, i membri delle strutture non vengono inizializzati. L'unica eccezione si ha quando la variabile-struttura è una variabile globale.

    Se tu hai un programma che ad ogni ciclo usa una martice di zeri allocata dinamicamente...
    -non potendo allocare tante matrici quanti sono i cicli del programma
    -volendo necessariamente cominciare ogni ciclo con la matrice di zeri

    Cosa faresti?
    A) Reinizializzo la matrice con due cicli for annidati
    B) libero la memoria allocata e la rialloco con una calloc (che alloca zeri)

  4. #4
    A, visto che la calloc di fatto richiama malloc e poi azzera la memoria, per cui azzerandola manualmente ti risparmi il passaggio free/malloc.
    Piuttosto che azzerarla con due for comunque potresti usare memset, che è particolarmente efficiente.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    grazie mille.

  6. #6
    Di niente, ciao!
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.