![](/img/trans.png)
[英]How Do I Read “int (*functionFactory(int n))(int, int) { … }”?
[英]How do I add int to a int**?
我正在用 C 編碼。
我收到以下變量作為參數int** list
。
我像這樣分配內存:
list = (int **)malloc(sizeof(int) * numberOfItems);
我正在遍歷另一個列表,我想向list
變量添加一個整數。 這是我的代碼:
*list[i] = i;
我收到以下錯誤:
[1] 18404 segmentation fault program
我做錯了什么?
盡管在 C++ 中是必需的,但沒有必要( 也不建議)在 ANSI C 中[m][c][re]alloc
的返回值。所以你的第一條語句應該是:(注意sizeof
語句的參數...... )
list = malloc(sizeof(* list) * numberOfRows);//create the first level of array of pointers
然后循環遍歷,正如您在帖子中指出的那樣,為第一個語句中創建的每個位置分配內存:
for(i=0;i<numOfRows;i++)
{
list[i] = malloc(sizeof(int));
}
注意:感謝@MM 的評論,雖然沒有必要或通常建議(閱讀上面的鏈接)在 C 中轉換 malloc 的返回值,但您在原始帖子中提供的示例代碼提供了一個很好的說明,其中使用了投射聚光燈和立即暴露出錯誤的可能性。 即 cast: (int **)
與sizeof
: int
的參數不匹配。
正如@FiddlingBits 指出的那樣,我的分配方法不正確。
這是修復:
int *workList = (int *)malloc(sizeof(int) * hardworkingDwarfCount);
list = &workList;
和 :
workList[i] = i;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.