01/10/2018, 08:22

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ế
Xin các ý kiến của cao nhân

Văn Dương viết 10:36 ngày 01/10/2018

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

Tran Xuan Son viết 10:35 ngày 01/10/2018

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

Long Dragon viết 10:31 ngày 01/10/2018

@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ả

*grab popcorn* viết 10:23 ngày 01/10/2018

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

Test :~

Văn Dương viết 10:34 ngày 01/10/2018

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ỉ.

Long Dragon viết 10:24 ngày 01/10/2018

@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
(em cài mingw-w64 trong thư mục C:\Program Files)

Bài liên quan
0