У меня есть символ **, который предназначен для хранения и неизвестно количество строк с неизвестной длинойОбъем памяти для выделения массива строк?
Я первоначально было выделено 10 байт с помощью
char **array = malloc(10);
и точно так же, прежде чем добавлять строки к этому массиву я выделяю
array[num] = malloc(strlen(source)+1)
Я заметил, что моя программа падает при добавлении 6-го элемента в массив
Вопрос: как работает память с этими массивами? Когда я выделил 20 байт, ничего не произошло, но когда я выделил 30, он внезапно мог содержать 10 элементов. Это были все строки размером 2-3 символа. Я изо всех сил думать о состоянии перераспределить память с, например
if condition{
memoryofarray += x amount
realloc(array, memoryofarray)
}
Что именно использует память в полукокса **? У меня создалось впечатление, что каждый байт соответствует количеству строк, которые они могут удерживать, т. Е. Malloc (10) позволит массиву удерживать 10 строк. Мне нужно знать это, чтобы установить условия +, чтобы знать, сколько нужно увеличить память, выделенную массивом.
Кроме того, как ни странно, когда я malloced
array[num] = malloc(0)
перед назначением строки к этому элементу массива, он работал без проблем. Вам не нужно, по крайней мере, иметь количество байтов для хранения строк? Это сбивает с толку меня массово
'char **' is ** not ** and array! – Olaf
У вас есть ошибка где-то. Найдите это, а затем посмотрите, остались ли какие-либо вопросы/заблуждения. – juanchopanza
'a char **' не является, каким-либо образом, массивом – Magisch