БлогNot. Си: почему нужно выделять память :)

Си: почему нужно выделять память :)

Учебный пример, цель - показать "упёртому" товарищу, что память "автоматически" не выделяется, а указатель не есть массив (п. 7.2).

Стандартная функция копирования строки strcpy память под строку назначения не выделяет. Соответственно, в нашей программе без выделения памяти под s (указатель на строку, в которую копируем), ничего не копируется и выводится сообщение "Null pointer assignment".

#include <stdio.h>
#include <string.h>
#include <alloc.h>

void main () {
 char *s,*p="Test string";
 //без выделения памяти - Null pointer assignment!
 s=(char *)calloc(strlen(p),sizeof(char));
 //или:
 //s=new char [strlen(p)];
 puts (strcpy(s,p));
}

24.12.2011, 12:58 [9534 просмотра]


теги: c++ программирование

К этой статье пока нет комментариев, Ваш будет первым