I have a std::vector of std::variant types allocated in stack. Since the size of each variant is variable. I am wondering what the memory layout of the vector is in stack.
How is the memory layout of a std::vector of std::variant?
1.8k Views Asked by motam79 At
1
There are 1 best solutions below
Related Questions in C++
- C++ using std::vector across boundaries
- Linked list without struct
- Connecting Signal QML to C++ (Qt5)
- how to get the reference of struct soap inherited in C++ Proxy/Service class
- Why we can't assign value to pointer
- Conversion of objects in c++
- shared_ptr: "is not a type" error
- C++ template using pointer and non pointer arguments in a QVector
- C++ SFML 2.2 vectors
- Lifetime of temporary objects
- I want to be able to use 4 different variables in a select statement in c ++
- segmentation fault: 11, extracting data in vector
- How to catch delay-import dll errors (missing dll or symbol) in MinGW(-w64)?
- How can I print all the values in this linked list inside a hash table?
- Configured TTL for A record(s) backing CNAME records
Related Questions in MEMORY-LAYOUT
- How to bitwise flip an char array by diagonal effectively in C/C++ or Cuda?
- Could 1 byte alignment cause memory corruption?
- Is MemoryLayout<T>.size/stride/alignment compile time?
- Why bss value shown by size command doesn't increase even after adding uninitialized global variable?
- Incrementing function pointers
- The buffer partition of numpy array
- Clarification about Bit-field ordering semantics in C
- windows process memory layout
- Virtual inheritance and empty vtable in base class
- Why I can see the several same segments in the /proc/pid/maps output?
- Is kernel space mapped into user space on Linux x86?
- Memory layout of a C program, why heap is also there
- How to pack a Rust enum into its minimal size?
- Why does virtual keyword increase the size of derived a class?
- Interpreting a vector of structs of 3 ints as an array
Related Questions in STD-VARIANT
- What is the best way to disable implicit conversion from pointer types to bool when constructing an std::variant?
- How can classes with `std::variant` members be copied safely?
- Why std::unique_ptr isn't optimized while std::variant can?
- How can I initialize this std::variant data member which has two similar alternatives?
- How to delegate constructors for std::variant?
- How to store parametric, strongly typed function for a text-based command console
- Unable to update std::variant in consteval context
- g++ std::variant seems can't support user class with std::atomic/std::mutex variable member (with detail/code)
- How does the "overloaded" trick for calling visit on variants in C++ actually work?
- Unordered map vs map
- Overriding std::variant::operator==
- Expressing a Python class as a type in std::variant in C++ using pybind11
- Why does assigning an int to a std::variant<long int, ...> fail?
- std::map with values of different function-types
- how to return a specific type from a variant using a visitor?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
C++ "std:variant" types are mimicking the good old C "union" types (or, more closely, the pascal tagged records), which means that they all have the same size, the only difference is that the std::variant values have additional information associated with them, this information tracks variant alternatives. Exact implementation for std::variant is platform-specific and I am afraid is not portable.
Visual C++ implementation for std::variant is very complicated (roughly 86 Kbytes of meta-template code). But we can guess some implementation details using simple tests:
Here we see that this specific std::variant type roughly corresponds to:
So, I hope that this helps to nail your exact type. Pascal had these types long ago (almost from the beginning), see this excerpt from the freepascal manual