Tại sao sizeof của con trỏ trên hệ điều hành 64bit chỉ có 4 bytes?

Theo e được biết thì trên hệ điều hành 32bit, con trỏ có kích thước là 4 bytes, còn trên hệ điều hành 64bit, con trỏ có kích thước là 8 bytes.
Nhưng khi e thử chạy đoạn code sau:

#include <stdio.h>

int main()
{
    printf("sizeof(x) = %d", sizeof(int *));
    return 0;
}

Thì compiler của Codeblocks (gcc) lại cho ra kết quả là 4 ???

Thử float * hay char * … vẫn thế :cry:
Xin các ý kiến của cao nhân :smiley:

Viết trên hệ điều hành 64 nhưng build cho hệ điều hành 32.

3 Likes

Do trình biên dịch 32 bit đấy :grin:

3 Likes

@Duong_Act @sontx vậy sửa như thế nào thế mấy anh ? Em download Codeblocks trên trang chủ của nó thì thấy chỉ hiện version cho win 7/8/10 chứ ko thấy nói gì về 32bit hay 64bit cả :smile:

Cài mingw-w64 rồi thay config thôi :3

Tải cái mingw mới này về (có gcc v6.3.0 luôn đất)
https://sourceforge.net/projects/mingw-w64/

Rồi khi cài nhớ chọn x86_64 (chọn i686 nếu muốn 32bit).
Cài xong rồi thì Settings -> Compiler -> Toolchain …
Configure như hình rồi restart codeblock :grin:

Test :~

4 Likes

Bao nhiêu bit là do compiler chứ không phải do ide. Nên thay compiler thì sẽ ok. Như bạn ở trên chỉ.

1 Like

@drgnz em thay tới chỗ này rồi

thì CB nó báo là không thể tìm thấy compiler rồi không run được luôn anh ơi :cry:
(em cài mingw-w64 trong thư mục C:\Program Files)

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?