我需要从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]
答案 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)
如果您想以安全的方式使用共享指针