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

Помощь дата->рейтинг Поиск Почта RSS канал Статистика nickolay.info Домой

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

Учебный пример, цель - показать "упёртому" товарищу, что память "автоматически" не выделяется, а указатель не есть массив (п. 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));
}

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

Здесь можно оставить коментарий, обязательны к заполнению только красные поля. Не пишите лишнего, и всё будет хорошо :)

Ваше имя:
Пароль (если желаете зарегистрировать имя):
Любимый URL (если указываете, то вставьте полностью):
Текст сообщения (до 1024 символов):
 
Введите 4-й код из этих чисел:
49406, 65935, 54484, 84608
 

24.12.2011, 12:58; рейтинг: 7831

  свежие записипоиск по блогукомментироватьстатистика

Наверх Яндекс.Метрика
© PerS
вход