首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在void getData()中,如何访问由void*指针返回的内存位置?

在void getData()中,如何访问由void*指针返回的内存位置?
EN

Stack Overflow用户
提问于 2017-01-29 20:04:15
回答 1查看 911关注 0票数 0

当我尝试通过getData()函数输入元素时,我得到错误分段错误(核心转储)。我无法在数组中输入元素。我不能理解为什么我不能访问void* into Class类型返回的内存位置。*parr的大小是4个字节,但我仍然无法将数据写入该内存位置?

代码语言:javascript
复制
#include<iostream>
#include<cstdlib>
using namespace std;

class Array
{
int *arr;
public:
void* operator new(size_t size)
{
    void *parr=::new int[size];
    //cout<<sizeof(parr);
    return parr;
}
void operator delete(void *parr)
{
    ::delete (int*)parr;
}
void getData()
{
    cout<<"Enter the elements";
    for(int i=0;i<5;i++)
        cin>>arr[i];
}
void showData()
{
    cout<<"Array is:\n";
    for(int i=0;i<5;i++)
        cout<<arr[i];
}

};

代码语言:javascript
复制
int main()
{
Array *A=new Array;
A->getData();
//A->showData();
(*A).showData();
delete A;
return 0;
}
EN

Stack Overflow用户

发布于 2017-01-29 20:18:20

您可能想要做的是编写适当的构造函数和析构函数,而不是重载类Arraynewdelete运算符:

代码语言:javascript
复制
class Array {
    int *arr;
public:
    Array(size_t size) : arr(new int[size]) {
    }
    ~Array() {
        delete arr;
    }
    // ...
};
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41920681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档