Bagikan melalui


C28741

peringatan C28741: Buffer yang tidak diannotasi dalam fungsi

Peringatan ini menunjukkan bahwa buffer yang diteruskan sebagai parameter fungsi atau dikembalikan oleh fungsi harus diannotasi dengan bahasa Anotasi Kode Sumber Microsoft (SAL). Alat analisis statis dapat menggunakan anotasi tersebut untuk mendeteksi overrun buffer.

Saat ini, hanya buffer string non-konstanta yang didiagnosis dengan peringatan ini. Idealnya, semua buffer yang diteruskan sebagai parameter fungsi atau dikembalikan oleh fungsi harus dianotasi. Array karakter wchar_t atau adalah kandidat untuk peringatan ini. Karakter yang tidak ditandatangani saat ini tidak.

Contoh

Contoh kode berikut menghasilkan peringatan ini.

  int foo( LPTSTR buffer, size_t cch );

Contoh kode berikut menghindari peringatan ini dengan menggunakan anotasi SAL _Out_writes_ untuk menentukan bahwa fungsi yang disebut menulis ke buffer dan bahwa buffer tidak boleh NULL. Anotasi menunjukkan bahwa buffer adalah elemen cch.

    int foo(_Out_writes_(cch) LPTSTR buffer, size_t cch );