Nhờ các bạn chỉ giúp mình cách giải quyết bài này với.
Như các bạn biết, khi khai báo biến int i và khởi tạo giá trị nó = x; nó sẽ được gán cho 1 địa chỉ trong memory.
Tuy nhiên, mình chỉ biết address nó (vd. 0x6400) ở dạng string. Làm sao để biết giá trị biến là bao nhiêu?
Hay nói cách khác đây là bài toán convert 1 chuỗi địa chỉ memory đang tồn tại sang kiểu pointer rồi lấy về giá trị biến tại địa chỉ đó.
Đây là code c++ mình đang làm, nó bị lỗi Segmentation fault
#include <stdio.h>
#include <unistd.h>
#include <iostream>
#include <stdlib.h>
#include <string>
int main () {
int var = 1; /* actual variable declaration */
printf("Address of var variable: %x\n", &var );
std::cout << &var << '\n';
printf("Value of *ip variable: %d\n", var );
char string[100];
printf ("Insert your full address: ");
gets (string);
const char *hexstring;
hexstring = (char *) string;
int number = (int)strtol(hexstring, NULL, 0);
std::cout << "hex: " << hexstring << '\n';
std::cout << "number: " << number << '\n';
int *ip;
ip = reinterpret_cast<int*>(number);
/* address stored in pointer variable */
printf("Address: %x\n", ip );
/* access the value using the pointer */
printf("Value: %d\n", *ip );
return 0;
}
output:
$ ./test
Address of var variable: 49cc2654
0x7ffd49cc2654
Value of *ip variable: 1
Insert your full address: 0x7ffd49cc2654
hex: 0x7ffd49cc2654
number: 1238115924
Address: 49cc2654
Segmentation fault