我有一個char **,其被設計成保持和要分配給字符串數組的內存量?
我最初分配使用
char **array = malloc(10);
並且類似地,10個字節添加串之前未知量串與未知長度對此陣列,我分配
array[num] = malloc(strlen(source)+1)
我注意到,我的程序崩潰後,將第6個元素添加到數組
我的問題是,這些數組的內存是如何工作的?當我分配了20個字節時,什麼都沒有發生,但是當我分配了30個字節時,它突然可以容納10個元素。這些都是2-3個字符的字符串。我努力想到一個條件來重新分配內存,例如:
if condition{
memoryofarray += x amount
realloc(array, memoryofarray)
}
究竟是什麼在char **中使用內存?我的印象是,每個字節對應於它們可容納的行數,即malloc(10)將允許陣列容納10個字符串。我需要知道這一點,以建立條件+知道多少增加分配給陣列的內存。
而且,奇怪的是,當我到數組元素分配一個字符串之前malloced
array[num] = malloc(0)
,它的工作沒有問題。你不需要至少有大量的字節來存儲字符串嗎?這是混淆我大規模
'char **'是**不是**和數組! – Olaf
你有一個錯誤的地方。找到它,然後看看是否還有任何問題/誤解。 – juanchopanza
'char **'不是,絕對不是一個數組 – Magisch