![](/img/trans.png)
[英]How to dereference a specific address in memory through dereferencing another address in memory?
[英]Dereferencing a pointer that has been assigned specific memory address
我正在使用指針和數組,必須在其中指定數組在內存中的起始位置或指針應保留的內存地址。 指針或數組獲取地址; 但是,我不能服從或分配值。
我嘗試運行以下代碼,但它給我帶來了Segmentation Fault。 我在這里做錯了什么? 請幫忙!
int *a = (int *)0x100;
cout << a << endl; //prints out 0x100
*(a) = 10; <------ seg fault on this line
按照數組的代碼,
int *b = new b[10];
b = (int *)0x0;
cout << b << endl; //prints out 0x0
b[0] = 10; <---- seg fault on this line
我在這里做錯了什么?
您正在取消引用未指向對象的指針。 這具有不確定的行為,但是如果運氣好的話,操作系統可能會檢測到錯誤並引發段錯誤。
解決方案:首先為對象分配內存。 您應該如何分配取決於您打算如何使用該對象。 分配對象的一種簡單方法是使用自動變量:
int main() {
int object;
int* pointer = &object; // now you can assign the pointer to the specific memory address of the existing object
*pointer = 10; // dereferencing is OK
}
flag
指針不會獲取未指定對象的地址嗎?
指針將使用指定對象的地址。 編譯器指定地址是什么。
我如何使指針指向地址0x100 ...
使用演員表。 您的程序已經做到了。
...並使用該內存來達到我的目的?
在標准C ++中不可能使用任意內存。 您將需要采用平台特定的方法來解決您的問題。
首先為int a分配內存,因此您正在進行段錯誤。
int *a = new int;
*a = 10;
delete a;
對於第二種情況,您還取消引用了空指針。 您無需將b設置為零地址。 通過這樣做,我相信你會失去陣列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.