Visualizzazione dei risultati da 1 a 9 su 9

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    286
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Puoi sempre far lavorare la funzione su una copia della stringa.
    Sinceramente fatico a capire; intendi creare una copia (statica) nel corpo funzione e restituirne il puntatore?

  2. #2
    Quote Originariamente inviata da Paulin Visualizza il messaggio
    Sinceramente fatico a capire; intendi creare una copia (statica) nel corpo funzione e restituirne il puntatore?
    Il suggerimento del nostro ottimo Oregon verte su un template simile alla strdup() o funzioni analoghe. La funzione alloca (dinamicamente, o da un pool preallocato in heap) un buffer delle dimensioni desiderate, vi effettua le operazioni previste, e infine ne restituisce al chiamante il puntatore.

    Vantaggi: quasi nulli. Si evita il passaggio del puntatore come parametro e si elimina la remotissima possibilità di errore legata al misutilizzo di un puntatore a memoria non scrivibile.

    Svantaggi: notevoli. Quasi tutte le norme di stile deprecano la restituzione di puntatori, vieppiù allocati nel corpo di una funzione
    subordinata (che non sia banalmente parte della famiglia *alloc()). Nella maggior parte delle normative si raccomanda la restituzione di un valore booleano che indichi l'eventuale presenza di errori, mentre la restituzione di eventuali valori avviene tramite le metodologie standard: variabili static a livello di modulo o applicativo, passaggio di puntatori, stack o heap appositi.

    La robustezza delle funzioni, in casi come quello qui discusso, è strutturalmente legata alla prevenzione dell'uso di puntatori NULL. Da notare che tutti i migliori RTOS mettono a disposizione apposite API per la verifica dei permessi inerenti il segmento/pagina di memoria referenziato da un dato puntatore, data l'enorme varietà architetturale dei sistemi embedded (un attributo di pagina può anche essere modificato a runtime, ma su taluni tipi di memoria ROM la scrittura è fisicamente impossibile). Tali informazioni sono ottenibili, in modo maggiormente laborioso, anche sui SO mainstream.

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.