簡體   English   中英

使用unsigned long long int進行動態分配

[英]Using unsigned long long int for dynamic allocation

如果我具有以下變量unsigned long long int *size ,則保留size = calloc(2, sizeof(int))還是一個好習慣,還是應該將其設置為size = calloc(2, sizeof(unsigned long long int))

謝謝

第二種選擇。 您不想對c中的數據類型大小進行假設。
這是非常依賴於平台/編譯器的。

沒有理由假定intunsigned long long int的大小相同(可能是相同的)。 如果將size聲明為unsigned long long int ,則在顯示的兩個選項中,正確的選擇是:

size = calloc(2, sizeof(unsigned long long int));

更好的做法是避免使用帶有sizeof顯式類型:

size = calloc(2, sizeof *size);

這在初始編碼中不太容易出錯,並且更易於維護。 如果在代碼有效期內更改類型,則僅需要在此處更改聲明。

根據您運行的機器,int的大小可以為2或4個字節。
但是,無符號long long的大小至少為8個字節。

因此,不可以, 不要使用磨損的尺碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM