Coder Social home page Coder Social logo

Comments (1)

mgarciaisaia avatar mgarciaisaia commented on September 9, 2024 1

Como regla general, en un TAD no liberás memoria que no reservaste vos, porque no sabés de dónde vino esa memoria (es decir, no tenés garantías de que sea liberable, siquiera). Podés poner como restricción de tu API que vas sa terminar liberando esa memoria (y entonces pasa a ser problema del usuario asegurarse de que la memoria que te pase sea liberable), pero en general nadie gana nada con eso, y limitás casos de uso (no te pueden pasar memoria no-liberable por free). Digamos, si alguien va a llamar a tu xxxx_destroy de todos modos, puede tomarse la molestia de hacer un free justo después del destroy si hiciera falta.

Pero haciendo esto que hace este TAD ganás en eso: podés pasarle un cacho de memoria que no sea manejada por malloc/free. Seguramente en este TAD lo implementamos así para usar en algún TP cuyo bitarray estaba persistido en un archivo (en el filesystem), y entonces podés mmapear ese archivo y usar el TAD de bitarray directamente contra ese archivo mappeado en memoria, y entonces trabajás de manera medio transparente con ese bitarray que está persistido en el disco.

Y si querés laburar con un bitarray en memoria, buen, tampoco es tan complejo: hacés un malloc() antes de llamar al create, y le pasás ese array. Y después lo liberás cuando llamás a destroy.

Y el TAD soporta dos casos de uso distintos por el precio de uno. Una ganga.

from so-commons-library.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.