[英]Checking Allocation Of malloc/calloc
每次使用 malloc/calloc 后檢查地址是否為 asagin 似乎是一個很好的編程實踐。
是否可以創建一個函數來檢查分配是否成功? 當我們轉換時,我們每次都轉換點的類型,所以函數不會知道它是哪種指針類型。
例如:
newUser -> name = (char*)malloc(NAME_LENGTH*sizeof(char));
if (newUser -> name == NULL){
printf("Allocation of newUser failed\n");
exit(1);
}
User *newUser = (User*)malloc(sizeof(User));
if(newUser == NULL){
printf("Allocation of newUser failed\n");
exit(1);
}
是否可以創建一個函數來獲取 newUser 和 newUser -> name 並在分配失敗時退出?
首先, 不要malloc
的返回值,因為它可以隱藏其他錯誤。
將malloc
包裝在一個可以為您進行空檢查的函數中沒有問題。 由於malloc
需要一個size_t
並返回一個void *
你的包裝函數應該做同樣的事情。 例如:
void *safe_malloc(size_t s)
{
void *p = malloc(s);
if (!p) {
perror("malloc failed");
exit(1);
}
return p;
}
然后,您可以在任何使用malloc
地方使用此函數,而無需顯式執行 NULL 檢查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.