01/10/2018, 17:41

`(void *) - 1` có nghĩa là gì?

mọi người cho e hỏi (void *) -1 có nghĩa là gì vậy? Em đọc trên stackoverflow thì có người nói đó là giá trị maximum của bộ nhớ có thể cấp phát. Em hiểu giống như là hệ điều hành 32bit thì max mỗi page memory = 0xFFFFFFFF
==> dùng để làm điều kiện để xét giới hạn bộ nhớ cấp phát
Em hiểu như vậy có đúng không ạ. Em cảm ơn.

Lê Ngọc Huy viết 19:47 ngày 01/10/2018
  • Thứ 1 ông phải biết -1 biểu diễn trong nhị phân bù 2 là ( 32 số 1). Đối với số nguyên ko dấu thì (32 số 1) trong hệ nhị phân là số lớn nhất. Do đó, nếu ép kiểu (-1) từ số có dấu sang số ko dấu, sẽ được số lớn nhất trong kiểu nguyên ko dấu

  • Thứ 2 biến con trỏ là biến chứa địa chỉ. Nó có cùng kích thước với kiểu số nguyên cơ bản(đối với C/C++, ngôn ngữ khác mình không rành), và đương nhiên địa chỉ sẽ là số không dấu.

  • Thứ 3 (void *) -1 là ép kiểu số -1 từ kiểu nguyên sang kiểu con trỏ.

Từ 3 cái trên, suy ra (void *) -1 là địa chỉ lớn nhất mà biến con trỏ có thể lưu.
Hiểu là vậy, chứ dùng làm gì thì mình ko biết =))

rogp10 viết 19:45 ngày 01/10/2018

Thay vì NULL thì một vài pa lại return cái này thôi nó là địa chỉ lớn nhất trong mem => một cách báo lỗi.

Bài liên quan
0