. , , , , , , : - — , , , , , .
- , , , , . , «»
: « … , , , , … ?».
, , , , , , -, , , , «» , , , .
?
: .
, , . . ( 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%
. — - , — .