我在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