[英]Is it possible to turn off this feature to allow different programs access the same block via memory address with C?
我試圖了解 memory 地址是如何工作的。 這是代碼。
#include <stdio.h>
int main()
{
int i = 127, * p;
p = &i;
long j = 0;
printf("%d\n", i);
printf("%d\n", *p);
printf("%p\n", (void*)&i);
scanf("%lx", &j);
p = (int *)j;
printf("%d\n", *p);
return 0;
}
我同時運行代碼 2 次,得到 2 個正在運行的程序等待輸入。
假設 program_1 給出0x7ffd66359b78
而 program_2 給出0x7ffc8b0d7af8
。
如果我為 program_1 輸入7ffd66359b78
我得到127
。
如果我為 program_1 輸入7ffc8b0d7af8
我得到
信號:分段錯誤(核心轉儲)
這意味着我在程序執行期間獲得的 memory 地址僅適用於該程序的執行,我的理解是否正確?
我想這是某種操作系統安全功能。 它叫什么名字? 是否可以關閉此功能以允許不同程序通過 memory 地址訪問同一塊?
這意味着我在程序執行期間獲得的 memory 地址僅適用於該程序的執行,我的理解是否正確?
是的。
我想這是某種操作系統安全功能。 它叫什么名字?
基本上,簡單來說,每個進程都有一個隱藏數字,當訪問 memory 時,該數字會添加到地址中。 https://en.wikipedia.org/wiki/Memory_management_unit
是否可以關閉此功能以允許不同程序通過 memory 地址訪問同一塊?
它被稱為共享 memory和https://en.wikipedia.org/wiki/Inter-process_communication#Approaches 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.