好的,我通过2层函数fun1调用func2调用func3.我使用基本上int*ptr一直向下传递一个指针,在调用堆栈的最低"级别"我还有另一个为int数组动态分配内存的函数.在顶层(func1级别),我总是为传递的指针返回null.我已经追溯到func3并且分配的内存正在填充值,但是当调用堆栈突然解除func3 - > func2时,指针就会消失(0x0000_0000)?我不明白在func3级别我基本上说ptr = allocate_ptr_array,但从那个返回它变为NULL!即使我没有释放记忆,世界上还在发生什么?我知道我的问题令人困惑.我已经在调试器中看到过这种情况
指针基本上按值传递.您需要将指针传递给指针(int**p)以获取在外部函数中分配的内存.
function1(int *p)
{
p = //allocate memory using malloc
}
function2(int **p)
{
*p = //allocate memory using malloc
}
function3()
{
int *p;
function1(p);
// in this case pointer is passed by value.
//The memory allocated will not be available in p after the function call function1.
int **p;
function2(&p);
//in this case pointer to pointer p has been passed.
// P will have the memory allocated even after
//the function call function1
}
Run Code Online (Sandbox Code Playgroud)
}
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |