Comments (3)
The problem with this is alignment, i.e. if you write arrays of bytes or shorts, you'll need to pre-align using the number of elements, to ensure it will match with the length field. I could simply shift the array at the end, but that could be costly. One thing we can do is to remove the need to specify the number of elements for all types with alignment >=4
from flatbuffers.
What the problem with alignment and why it is needed? Could you please explain it to me with example if possible. I saw it in the code but did not have time to fully analyse its role and i did not understand why it is there.
from flatbuffers.
Imagine you write an unknown amount of shorts, and that number ends up being 3. That is 6 bytes of data. Now you want to write the length field, which is an int, and needs to be 4-byte aligned. You must now write 2 padding bytes between the array data and the length field, causing the array data to not be adjacent to the length field. startVector takes care of that by aligning all the data before you write the array data.
from flatbuffers.
Related Issues (20)
- Test failures with Numpy 2.0
- Wireshark lua dissector generator [same to #153]
- Auto-generated Lua files doesn't support lower-case struct name HOT 1
- [Feature Request] Add switch to enable alternate runtime implementations [Nim, any compiler, any OS, master]
- Get wrong double value using IndirectDouble to serialize.
- [fr] Add support for Mojo HOT 1
- object.declaration_file is empty when use Parser to load .fbs schema file. HOT 1
- Add prefix to import path when referencing generated modules [Python, flatc 24.3.25] HOT 1
- Python "struct.error: unpack_from requires a buffer of at least 1718886439 bytes for unpacking 4 bytes at offset 1718886435 (actual buffer size is 361)" HOT 3
- [Java] Add Automatic-Module-Name to Manifest file
- [Java] Support JPMS for Java 9+
- Poor escaping of keywords in C++ Union codegen
- Java enum name() function source compatibility issue
- Document which schema changes will preserve source compatibility
- Requesting a stable download url
- Upgrade bitflags dependency in Rust implementation to version 2.6.0
- FlatBufferBuilder (in C++ and possibly other languages) should consider aligning empty vectors to `T`. HOT 1
- `LICENSE` file missing from published Python wheel
- [Dart, master] Recursive imports are not respected
- Is the combination of `CreateNumpyVector` and `GetVectorAsNumpy` guaranteed to be portable? [Python with NumPy] 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 flatbuffers.