Rumah > pembangunan bahagian belakang > C++ > Mengapa Penunjuk Fungsi dan Penunjuk Data Tidak Serasi dalam C/C ?

Mengapa Penunjuk Fungsi dan Penunjuk Data Tidak Serasi dalam C/C ?

DDD
Lepaskan: 2024-12-07 03:38:12
asal
198 orang telah melayarinya

Why Are Function Pointers and Data Pointers Incompatible in C/C  ?

Penunjuk Fungsi dan Penunjuk Data: Menangani Kenangan Tidak Serasi

Semasa menukar penunjuk fungsi kepada penunjuk data (dan sebaliknya) secara mengejutkan dibenarkan dalam C /C , kemudahan ini tidak dijamin di semua platform. Ini menimbulkan persoalan: mengapa penunjuk ini sememangnya tidak serasi?

Jawapannya terletak pada seni bina pengurusan memori. Dalam sesetengah seni bina, seperti seni bina Harvard, kod dan data berada di kawasan memori yang berbeza. Dalam sistem ini, penunjuk fungsi (menuju arahan) tidak boleh ditukar dengan lancar menjadi penunjuk data (menunjuk kepada nilai biasa) kerana ia wujud dalam domain memori yang berasingan.

Sebaliknya, dalam seni bina Von Neumann, di mana kod dan data wujud bersama dalam ruang memori yang sama, penunjuk fungsi dan penunjuk data kelihatan serasi. Walau bagaimanapun, C/C tidak mengehadkan dirinya kepada seni bina tertentu dan membenarkan kod yang berpotensi dijalankan pada kedua-dua jenis sistem.

Akibatnya, untuk mengekalkan keserasian merentas semua seni bina, C/C tidak boleh hanya merawat fungsi penunjuk dan penunjuk data sebagai alamat yang boleh ditukar ganti ke dalam ingatan utama. Potensi ketidakserasian berpunca daripada kepelbagaian reka bentuk seni bina yang mesti ditampung oleh C/C.

Atas ialah kandungan terperinci Mengapa Penunjuk Fungsi dan Penunjuk Data Tidak Serasi dalam C/C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan