对已分配特定内存地址的指针解引用
Dereferencing a pointer that has been assigned specific memory address
我正在使用指针和数组,我必须指定数组在内存中的起始位置或指针应该持有的内存地址。指针或数组接受地址;但是,我不能服从或赋值。
我试图运行以下代码,但它给我分割错误。我哪里做错了?请帮助!
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
我在这里做错了什么?
你正在解引用一个不指向对象的指针。这有未定义的行为,但如果你幸运的话,操作系统可能会检测到错误并引发一个segfault。
解决方案:首先为对象分配内存。如何分配取决于您打算如何使用该对象。分配对象的一种简单方法是使用自动变量:
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的地址为0。这样你就失去了你的阵列。
相关文章:
- 如何使用基类指针引用派生类成员
- 将常量指针引用绑定到非常量指针
- 如果非动态变量被指针引用,何时超出范围?
- 转换指针引用的字符串
- 指针引用的生存期(以 C++为单位)
- 从 unique_ptr::get 发送指针作为指针引用进入函数
- 指针/引用的 CLion 格式
- 使用模板专用化来比较指针引用
- 如何保存指向抽象基类的指针/引用,但在 c++ 中仍然可以复制
- C++初始化指针/引用/复制细微差别
- 用数组或指针引用函数?
- 指针范围问题和返回类中封装的指针向量内的指针引用
- 强制转换为指针引用是否会导致未定义的行为
- 访问由 void 指针引用的结构的成员
- C 为什么当先前的步骤引发异常时,std :: shared_ptr的指针引用会被破坏
- 动态指针引用数组由三元运算符返回值,但有异常
- 悬空指向 int 和 char* 常量的指针/引用
- C++ 二维数组和指针引用
- 通过使用指针/引用,在C++中使用向量加快计算速度
- C++非类型模板模板到函数指针/引用