Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
uyarı C28651: Statik başlatıcı, üye işlev işaretçileri nedeniyle yazma sayfalarında kopyalamaya neden oluyor
Genel veya statik sabit değişkenlerin statik başlatıcıları genellikle derleme zamanında tam olarak değerlendirilebilir, bu nedenle RDATA'da oluşturulur. Ancak herhangi bir başlatıcı, statik olmayan bir işlev olduğu üyeye işaretçi işleviyse, başlatıcının tamamı performans maliyeti olan yazma üzerine kopyalama sayfalarına yerleştirilebilir.
Hızlı yükleme gerektiren ve yazma sayfalarındaki kopyayı en aza indiren ikili dosyalar için, statik başlatıcıdaki tüm işlev işaretçilerinin işaretçiden üyeye işlevler olmadığından emin olun. Üyeye işaretçi işlevi gerekiyorsa, çağrıyı gerçek üye işlevine sarmalayan basit bir statik üye işlevi yazın.
Örneği
Aşağıdaki kod örneği bu hatayı oluşturur.
void Func()
{
WCHAR*pszBuf=newWCHAR[MAX_PATH];
DPA_InsertPtr(_hdpa, DA_LAST, pszBuf);
}
void CleanupDPA()
{
int count = DPA_GetCount(_hdpa);
for (int i = 0; i < count; i++)
{
delete [] (LPWSTR)DPA_GetPtr(_hdpa, i);
}
}
Aşağıdaki kod örneği bu hatayı önler.
class MyClass
{
...
bool memberFunc();
static bool memberFuncWrap(MyClass *thisPtr)
{ return thisPtr->memberFunc(); }
...
};
const StructType MyStruct[] = {
...
&MyClass::memberFuncWrap,
...
};