分配受控内存 - 以字节为单位的数组大小

时间:2013-03-06 23:14:34

标签: c++ memory allocation

我想学习如何处理内存分配和解除分配。我的第一个“任务”是体验一下。

基本上,我想使用new运算符分配1 kB内存,直到抛出异常为止。我不太清楚如何做到这一点,但我希望它会与此类似:

int main(){
unsigned int counter = 0;
try{
    for (int i = 0; i < 10; i++){
            int *p_array = new int[1024*i];
            cout << sizeof(p_array);
            counter++
        }
    delete[] p_array; 
}catch (std::bad_alloc& ba){
    std::cerr << "bad_alloc caught: " << ba.what() << endl << "Allocated 1KB " << counter << " times";
}
return 0;
}

错误:

test.cpp: In function ‘int main()’:
test.cpp:24:12: error: ‘p_array’ was not declared in this scope
make: *** [out_Executable] Error 1

相当简单的程序,但我仍然被卡住了。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

你有一些形式(简化)

{
  int * p = ...; // p only exists in this scope
}
delete p; // p doesn't exist here

你声明一个int*并为循环的每次迭代分配一个数组。 int*仅在单次迭代期间存在。阵列本身一直存在,直到程序结束。