Распределение памяти в С
C компилятора имеет библиотеку распределения памяти, определяемый в malloc.h. Память резервируется с помощью функции malloc, и возвращает указатель на адрес. Он принимает один аргумент, размер памяти в байтах.
Следующий пример распределяет пространство для строки "привет мир".
ptr = (char *)malloc(strlen("Hello world") + 1);
Один дополнительный байт, должен учитывать характер прекращения строку, '\ 0'. (Символ *), называется типа, силы и тип возвращаемого значения для символа *.
Поскольку типы данных могут иметь различные размеры, а malloc возвращает пространство в байтах это хорошая практика из соображений портируемости использовать оператор sizeof, указывая размер выделения.
Следующий пример читает строки к характеру буферного массива, а затем распределяет точный объем памяти требуется экземпляров и его переменную по имени "ptr".
#include <string.h>
#include <malloc.h>
int main()
{
char *ptr, buffer[80];
printf("Enter a string: ");
gets(buffer);
ptr = (char *)malloc((strlen(buffer) + 1) *
sizeof(char));
strcpy(ptr, buffer);
printf("You entered: %s\n", ptr);
return 0;
}
Выпуск программы будет следующим :
Enter a string: India is the best
You entered: India is the best |
|