- , , , , . , «» : « … , , , , … ?».
, , , , , , -, , , , «» , , , .
?
: .
, , . . ( Java, ). ( ) , , . - (, — UNIX, K&R — , , ANSI ISO — - ), - . ( ANSI C ISO C) .
. , -, - : UNIX. . , , , , UNIX — , .
- .
: - ? : , , , , , . , Java ECMAScript. , , . , - « » ( 1 129 x86 2, ARM' 0, «1 << 129» ) .. .. OS. — « » 10 ( 10, 100)?
UNIX ( ) . , UNIX — . ? . ? . , ( 8086)? . , «» ? . .. .. , .
: — , . , . — , , . , — , ? : , ! , UNIX ( « » Linux) . , , « » # Java. , C# Java , — , . , Java « ».
, UNIX ( : , ). , . .
: , «» ? , iAPX 432 . . begin end C++. — . , , «» . , : « », , , — . , — «» . , , , — «», — « ».
« ». , ,
int
unsigned int
. . : «, , - ». « »: ( , ), . , - .
int
unsigned int
… -.
, , .
( ", aka "implementation-defined behavior") . ( " " aka "undefined behavior") : , , , . ( , , ).
, — - . , , . , ? : 8086 8087. , , . , ,
float
int
(
long
16- ) ! ( 8087) , 8086 «»!
: ( ), «»:
int
,
int
,
float
,
float
. , , — , ! , .
— ! , , ?
p
realloc
'
realloc
' . , : , , « » - … , !
… , :
… , , ? :#include <stdio.h> #include <stdlib.h> int main() { int *p = (int*)malloc(sizeof(int)); int *q = (int*)realloc(p, sizeof(int)); *p = 1; *q = 2; if (p == q) printf("%d %d\n", *p, *q); } $ clang -O realloc.c ; ./a.out 1 2
realloc
, , :
p₁
,
p₂
q
.
p₂
, ,
q
(, , , — ).
*p₂
*q
. — :
*p₂
1
,
q
2
.
printf
. !
p₂ == q
-
false
, — .
, , . , , « » , «». … — , «» .
, , : ( , - ) , — , C: , , , , . , . , … !
, ? : - ? ! , ! , : , , , , , — , . !
, . GCC : ( — ), -fwrapv, -ftrapv, . -fno-strict-aliasing, may_alias. . — , , , .
, , , : , , — - , 99% . — - , — .