Comments (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 mmap
ear 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)
- Argumentos passthrough en funciones del tipo _iterator HOT 4
- Problema con funcion string_to_upper HOT 3
- Problema con config_set_value HOT 1
- Problema con el config_get_array_value HOT 3
- Funciones faltantes en colecciones HOT 2
- Algunos problemas que me surgieron con funciones de las congif.
- string_get_string_as_array tiene un comportamiento erróneo si no recibe una lista HOT 2
- list_sort se comporta extraño al ordenar mediante más de un comparador HOT 1
- Soportar un iterador externo de diccionarios
- Reemplazar un elemento de una lista por varios al iterarla con el iterador externo
- Bug en string split con separadores de mas de un caracter HOT 3
- verificación de creación del bitmap - filesystem
- Cambiar tipo de retorno de la funcion list_is_empty HOT 1
- Dockerfile not working
- Agregar una API simple para manejo de timestamps HOT 3
- Implementar un flatMap
- Cambiar el formato de la documentación HOT 2
- Documentar parámetros y retornos
- Agregar forma de copiar las keys de un diccionario HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from so-commons-library.