函数内部通过指针指向内存

时间:2012-10-03 12:57:02

标签: c memory memory-management

我需要从C ++代码中删除所有引用,并且因为我对纯C的知识已经很老了,这就是为什么我想问你的意见。 你对这种内存分配有任何疑问吗?:

void myallocator2(int** mystr, int* howmany)
{
    *howmany = 40;
    *mystr = (int*)malloc( (*howmany) * sizeof(int));
    for(int i=0;i<*howmany;++i)
        (*mystr)[i] = i*2;
}

  int** mystr;
  int* howmany = new int();
  *howmany = 0;
  myallocator2(mystr,howmany);
  for(int i=0;i<*howmany;++i)
      do something (*mystr)[i]

2 个答案:

答案 0 :(得分:2)

这是您的代码的C ++版本。没有讨厌的动态分配。

class A
{
public:
    int a_;
};

void myallocator2(std::vector<A>& mystr, int& howmany)
{
    howmany = 40;
    mystr.clear();
    mystr.reserve(howmany);
    for(int i=0;i<howmany;++i)
        mystr[i].a_ = i*2;
}

std::vector<A> mystr;
int howmany = 0;
myallocator2(mystr,howmany);
for(int i=0;i<howmany;++i)
    do something mystr[i].a_;

免责声明 - 是的,我选择忽略“我需要从我的C ++代码中删除所有引用”。除非你给我们一些明确的,经过深思熟虑的动机,否则这只是一个愚蠢的要求。

答案 1 :(得分:0)

如果您想以安全的方式使用共享指针