因此,我將代碼範圍縮小到我需要幫助的地方。對不起,以前的文字和拼湊代碼牆。雙指針,動態分配和使用指針數組
// Headers
#include <stdio.h>
#include <stdlib.h>
// Function Protype
void test_function(int **ptr2);
// Main Function
int main(void) {
int *ptr1;
int i = 0; // Counter
test_function(&ptr1); // Calling function
for (i = 0; i < 10; i++) {
printf("%d", ptr[i]); // Should print numbers from 0-9
}
return 0;
}
// Custom Function
void test_function(int **ptr2) {
// Variables
int i = 0; // Counter
int j = 0; // Dynamic allocator
*ptr2 = malloc(sizeof(int) * j); // Allocates 10 slots of size int
for (i = 0; i < 10; i++) {
*ptr2[i] = i; // <----- This line gives a segmentation fault error
}
return;
}
因此,基本上,這個程序應該通過陣列使用malloc分配j的動態大小,輸入數字0-9和顯示0-9向用戶進行迭代。然而,被註釋的函數test_function
中的行給我一個分段錯誤錯誤。
使用調試器。至少它會告訴你哪一行代碼觸發了seg錯誤,這是你應該與我們分享的信息。另外,試着讓你的問題簡潔:代碼,它應該做什麼以及它實際上在做什麼。例如,爲什麼要顯示兩個版本的代碼?我們應該從中得到什麼,你真的在問哪一個? – kaylum
安裝GDB(GNU調試器)需要10分鐘才能確定你的錯誤 – tesseract
我們應該如何調試整個程序?減少它。 –