Bagikan melalui


LNK4092 Peringatan Alat Linker

bagian bisa-tulis bersama 'bagian' berisi relokasi; gambar mungkin tidak berjalan dengan benar

Linker memancarkan peringatan ini setiap kali Anda memiliki bagian bersama untuk memperingatkan Anda tentang masalah yang berpotensi serius.

Salah satu cara untuk berbagi data antara beberapa proses adalah dengan menandai bagian sebagai "dibagikan." Namun, menandai bagian sebagai dibagikan dapat menyebabkan masalah. Misalnya, Anda memiliki DLL yang berisi deklarasi seperti ini di bagian data bersama:

int var = 1;
int *pvar = &var;

Linker tidak dapat diselesaikan pvar karena nilainya tergantung pada tempat DLL dimuat dalam memori, sehingga menempatkan catatan relokasi di DLL. Ketika DLL dimuat ke dalam memori, alamat var dapat diselesaikan dan pvar ditetapkan. Jika proses lain memuat DLL yang sama tetapi tidak dapat memuatnya di alamat yang sama, relokasi untuk alamat var akan diperbarui untuk proses kedua dan ruang alamat proses pertama akan menunjuk ke alamat yang salah.