Is alignof(T*) is the same value for all possible types T? What about sizeof(T*)?
Please answer based on what is allowed/specified by the standard and not what is the current situation in different compilers.
Is alignof(T*) is the same for all possible types? What about sizeof(T*)?
208 Views Asked by Koosha 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 POINTERS
- Why we can't assign value to pointer
- C++ template using pointer and non pointer arguments in a QVector
- Allocating memory for pointers inside structures in functions
- OpenLayer 3: Map pointer up event can not be triggered when the map created on overlay
- Suspicious pointer-to-pointer conversion (area too small) in C
- Why is implicit pointer of pointer to pointer conversion legal?
- using memcpy to copy arrays passed as parameters
- Smart pointer vs owning raw pointer
- Program not compiling after casting pointer
- Is it legal to compare dangling pointers?
- 2D array, sort rows by sum
- Malloc confusion
- Trying to receive a vector2f from an object pointer
- How to call a non-class member function with pointers as parameters with QtConcurrent::run?
- Reverse linked list in java
Related Questions in LANGUAGE-LAWYER
- Why is implicit pointer of pointer to pointer conversion legal?
- Is it legal to compare dangling pointers?
- How does an unspecified pointer conversion behave in C++14?
- Function returning another function
- MSVC 12 std::initializer_list bug when copying std::string
- Is it valid to pass non-arithmetic types as arguments to cmath functions?
- `new Object` vs `Object` in the ECMAScript spec
- Variadic template parameters of one specific type
- Quadruple "const" in function definition
- Name lookup for local class members inside templates
- The destructor for the class member `B`, why is it invoked in the snippet below?
- decltype, recursive type deduction for overloaded operator
- Conversion from std::tuple<T, U> to std::pair<T, U>
- Why are typedef templates illegal?
- Is the grammars in Java7 spec really equivalent?
Related Questions in SIZEOF
- Reference as a only class member gives size 8 for integer
- Why sizeof(Point) is 8?
- C Define size of array inside main for a struct
- Can "sizeof(arr[0])" lead to undefined behavior?
- C++ address value and sizeof
- Size of a pointer in C
- sizeof(2147483648) is 8 bytes while sizeof(2147483647+1) is 4 bytes
- Is there any way to set C++ long type size with 8 bytes (x64)?
- VLAs and side-effect in sizeof's operand
- How is pointer to array different from array names?
- How best to prevent unused variable warnings in custom assert without sizeof?
- C++ simple malloc and sizeof
- Calculation of Array size using sizeof()
- C++: Unexpected size of class object in multiple inheritance
- getting different answer for sizeof(arr) in different scenario?;
Related Questions in ALIGNOF
- How to align a struct member in D?
- Why using alignof on non-typed types is valid?
- error: storage class may not be specified here when using __align() in MDK ARM uVision v5 ARM Compiler 5
- C2x: if _Alignof(array type) yields the alignment of the element type, then will it be useful to permit _Alignof(incomplete array type)?
- The sizeof and _Alignof value of a structure
- What is the use of alignof operator?
- Is it always the case that sizeof(T) >= alignof(T) for all object types T?
- Does `T` always have the same size and alignment as `std::aligned_storage<sizeof(T), alignof(T)>`
- Effective type in packed raw data
- How do I fix "The program issued a command but the command length is incorrect." error when calling Process32First()?
- `std::alignment_of` versus `alignof`
- How to tell the maximum data alignment requirement in C++
- Is alignof(T*) is the same for all possible types? What about sizeof(T*)?
- Alignment and size of C++ primitive types
- Why is alignof(max_align_t) 16?
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?
The standard doesn't say much about sizes and alignments of pointers, and thus they are not strictly restricted by the language.
Conversion from one valid pointer to function into another and back is guaranteed to produce the original value. As such, there must be the same minimum number of values that must be representable that is the maximum number of valid addresses for any given pointer to function type which gives lower bound to the size of all pointer to function types.
Conversions between object types have a similar guarantee, which however only applies when the original pointed type has stricter or equal alignment requirement. As a consequence, object pointers to highly aligned types require fewer representable values. If the alignment is high enough, then the type could in theory be smaller.
On systems where conversion between pointer to void and pointer to function is allowed (which is conditionally supported), the minimum number of representable values of pointers to functions and pointers to void must be the same.
But even so, some pointer types could be larger than the number of representable values it needs. Those extra bits would simply necessarily be unused. This would not be very practical.