我有一个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