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