c - How does the OS know how much to increment different pointers? -


with 32-bit os, know pointer size 4 bytes, sizeof(char*) 4 , sizeof(int*) 4, etc. know when increment char*, byte address (offset) changes sizeof(char); when increment int*, byte address changes sizeof(int).

my question is:

  • how os know how increment byte address sizeof(yourtype)?

the compiler knows how increment pointer of type yourtype * if knows size of yourtype, case if , if complete definition of yourtype known compiler @ point.

for example, if have:

struct yourtype *a; struct yourothertype *b;  struct yourtype {     int x;     char y; }; 

then allowed this:

a++; 

but not allowed this:

b++; 

..since struct yourtype complete type, struct yourothertype incomplete type.

the error given gcc line b++; is:

error: arithmetic on pointer incomplete type 

Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -