Sei sulla pagina 1di 7

c 

 
O 
06.08.2009




64- .





,
. .
,
64- . , , /++,
.
- 32- 64-
, .
,
. , 32-
,
64- .
64-
.
. 64-
64- ,
.
64-

64- .

    
.
,
.
,
,
. :ITS4, SourceScope, Flawfinder, -
[1].
, .
, ,

. ,
, [2].
, .
- ,
. ,

. , ,
/ .
,
0x00 ( ).
, -1 +1.
,
.
.
.
, 64 .

f


   
, 64-
"20 ++ - 64- " [3]
" 64- " [4]. ,
,
.
,
64- . , , ,
64- ,
. - .
,
, , 4 Gb. .
void *SpecificMalloc(unsigned int size) {
return malloc(size);
}
...
char *buf;
size_t len;
read(fd, &len, sizeof(len));
buf = SpecificMalloc(len);
read(fd, buf, len);

, 64- (Linux, Windows) int 32-, size_t 64-. size_t unsigned int
SpecificMalloc. 4 ,
, . ,
, ,
64- , 32- 64-
, .

. ,
, , -
time_t.
:
char buf[9];
sprintf(buf, "%p", pointer);

, . .
, 4
:
LPARAM *CopyParamList(LPARAM *source, size_t n)
{
LPARAM *ptr = (LPARAM *)malloc(n * 4);
if (ptr)
memcpy(ptr, source, n * sizeof(LPARAM);
return ptr;
}

:
int a = -2;
unsigned b = 1;
ptrdiff_t c = a + b;
if (c == -1)
{
printf("Case: 32 -bit\n");
} else {
printf("Case: 64 -bit\n");


'if'. ++ "ptrdiff_t c = a + b;"
:
/m int, -2 unsigned
0xFFFFFFFEu.
/m 32- 0x00000001u 0xFFFFFFFEu,
0xFFFFFFFFu 32-.
/m 0xFFFFFFFFu 64- . 32 , -1. 64 0xFFFFFFFF.

, .

64- :
int A = -2;
unsigned B = 1;
int array[5] = { 1, 2, 3, 4, 5 };
int *ptr = array + 3;
ptr = ptr + (A + B);
*ptr = 10; //
// 64- .

,
A B , .
.
. :
ptrdiff_t SetBitN(ptrdiff_t value, unsigned bitNum) {
ptrdiff_t mask = 1 << bitNum;
return value | mask;
}

32-
0 31 . 64-
0 63. ,
32-63. , "1" int 32
. 0 1,
. ,
. 31- 64-

0xffffffff80000000. "1 << 31" 2147483648. 64- 0xffffffff80000000.



, , ,
.
,
( ),
UNDO/REDO, , , :
//
int *p1, *p2;
....
char str[128];
sprintf(str, "%X %X", p1, p2);
//
// :
void foo(char *str)
{
int *p1, *p2;
sscanf(str, "%X %X", &p1, &p2);
// - p1 p2.
...
}

%X
64- .
64- , ,
, . ,

,
.

  


  

,
64- :
1.m ,
32- 64- .

2.m , 32-
.
3.m , ,
, ,
.
4.m .
5.m
32- 64- .
6.m ,
, 64- .
, , , ,
64- .

, ,
.

64- . PVS-Studio,
64-
.
PVS-Studio
" "
, , (OpenMP)
64- [5]. PVS-Studio Microsoft Visual Studio 2005/2008,
MSDN.
PVS-Studio Viva64,
/++- , 32-
64-.
64- .
PVS-Studio 64 .
64- ,
,
. , ,
.
, PVS-Studio ,
32- 64-
64- . PVS-Studio ,
, sprintf, strncpy
. ,
ITS4, SourceScope, Flawfinder, -. PVS-Studio ,
64- , .

 


, -
, ,
. .
,
, , .
, ,
, ,
, ,
. ,
. ? , ,
.

 

1.m , . . - . : , 2006. - 526 . :
. - ISBN 5-469-00982-3.
2.m , , -, . :
.: . . - .: "", 2005. - 400 . : . . . . ISBN 5-8459-0785-3. 32.973.26-018.2.75.
3.m , . 20 ++ - 64-
. http://www.viva64.com/art-1-1-1958348565.html
4.m . 64- . http://www.viva64.com/art-1-11757483679.html
5.m . PVS-Studio. http://www.viva64.com/art-4-11796251700.html

Potrebbero piacerti anche