錯誤: calloc-overflow
位址清理程式錯誤:calloc-overflow
CRT 函式 calloc
會在記憶體中建立陣列,並將元素初始化為 0。 引數可以建立內部錯誤,導致 Null 指標做為傳回值。
範例
// example1.cpp
// calloc-overflow error
#include <stdio.h>
#include <stdlib.h>
int number = -1;
int element_size = 1000;
int main() {
void *p = calloc(number, element_size); // Boom!
printf("calloc returned: %zu\n", (size_t)p);
return 0;
}
若要建置及測試此範例,請在 Visual Studio 2019 16.9 版或更新版本的 開發人員命令提示字元 中執行下列命令:
cl example1.cpp /fsanitize=address /Zi
devenv /debugexe example1.exe
產生的錯誤
另請參閱
AddressSanitizer 概觀
AddressSanitizer 已知問題
AddressSanitizer 組建和語言參考
AddressSanitizer 執行時間參考
AddressSanitizer 陰影位元組
AddressSanitizer 雲端或分散式測試
AddressSanitizer 偵錯工具整合
AddressSanitizer 錯誤範例
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應