Condividi tramite


Errore: calloc-overflow

Errore di purificazione dell'indirizzo: calloc-overflow

La funzione calloc CRT crea una matrice in memoria con elementi inizializzati su 0. Gli argomenti possono creare un errore interno che porta a un puntatore NULL come valore restituito.

Esempio

// 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;
}

Per compilare e testare questo esempio, eseguire questi comandi in un prompt dei comandi per sviluppatori di Visual Studio 2019 versione 16.9 o successiva:

cl example1.cpp /fsanitize=address /Zi
devenv /debugexe example1.exe

Errore risultante

Screenshot of debugger displaying calloc-overflow error in example 1.

Vedi anche

Panoramica di AddressSanitizer
Problemi noti di AddressSanitizer
Riferimento alla compilazione e al linguaggio AddressSanitizer
Informazioni di riferimento sul runtime AddressSanitizer
Byte ombreggiatura AddressSanitizer
AddressSanitizer cloud o test distribuiti
Integrazione del debugger AddressSanitizer
Esempi di errore addressSanitizer