Bagikan melalui


Kesalahan: calloc-overflow

Kesalahan Pembersih Alamat: calloc-overflow

Fungsi CRT calloc membuat array dalam memori dengan elemen yang diinisialisasi ke 0. Argumen dapat membuat kesalahan internal yang mengarah ke penunjuk NULL sebagai nilai yang dikembalikan.

Contoh

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

Untuk membuat dan menguji contoh ini, jalankan perintah ini di perintah Visual Studio 2019 versi 16.9 atau yang lebih baru:

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

Kesalahan yang dihasilkan

Cuplikan layar debugger yang menampilkan kesalahan calloc-overflow dalam contoh 1.

Lihat juga

Gambaran umum AddressSanitizer
Masalah yang diketahui AddressSanitizer
Referensi bahasa dan build AddressSanitizer
Referensi runtime AddressSanitizer
Byte bayangan AddressSanitizer
AddressSanitizer cloud atau pengujian terdistribusi
Integrasi debugger AddressSanitizer
Contoh kesalahan AddressSanitizer