我在func1()中有一个静态char数组。而当我调用func2()我传递它的char数组地址(双指针),因为我在它内部分配内存。然后,使用指针进行一些计算,并在第二次函数调用时指针不会被重置,但它指向我分配的字节范围内的某处。双指针指向同一个堆领域的随机地址
比方说,我分配了500字节。第一次通话从0开始,第二次通话继续。
让我们现在另一种方法为例,分配在FUNC1)内存(并且不需要使用相同的代码,只要调用FUNC2双指针()的指针被reseted和从0
开始我为什么经历这个?
CASE 2
func2(char *array){
++array; // position 1
}
func1(){
static char *array;
if(array == NULL){
array = (char*) malloc(500 * sizeof(char));
}
func2(array);
func2(array); // again position 1
}
CASE 1
func2(char **array){
if(*array == NULL){
*array = (char*) malloc(500 * sizeof(char));
}
++*array; // position 1
}
func1(){
static char *array;
func2(&array);
func2(&array); // calling it again, pointer goes on position 2
// or it starts counting for ex. from position 55(random said)
}
请粘贴代码 – mkmk88
请发布一个[最小,完整和可验证的示例](http://stackoverflow.com/help/mcve),它可以证明问题。 –
是的,我应该足够了解这个概念。对不起,能够产生很多 – Maxitj