Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






  • Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
    Начать продвижение сайта
  • Проблемы, связанные с указателями






    Самые распространенные проблемами при использовании указателей:

    1) попытка работать с указате­лем, не содержащим адреса ОП, выделенной под переменную;

    2) потеря значения указателя из-за присваивания ему нового
    значения до освобождения ОП, которую он адресует;

    3) неосвобождение ОП, запрошенной с помощью функции выделения динамической памяти.

    При объявлении указателя на значение любого типа ОП для ад­ресуемого значения не резервируется. Выделяется только ОП для переменной-указателя, но указатель при этом не получает никакого значения. Рассмотрим пример, содержащий грубую ошибку – попытку работать с не­инициализированным указателем:

    int *х; //указателю х выделена ОП, но х не содержит адреса ОП для

    //конкретной переменной

    *x=123; //ошибка

    Присваивание ошибочно, так как указатель х не получил значения адреса, по которому должно быть расположено значение 123.

    Не вдаваясь в подробности, можно сказать, что неинициализированное значение указателя может быть недопустимым значением адресов, что может привести к нарушению работоспособности всей программы. Компилятор не обнаруживает эту ошибку. Это должен делать разработчик программы.

    Исправить ситуацию можно с помощью одной из функций выделения динамической памяти, например функции malloc(). Форма обращения к функции malloc():

    < имя_указателя> = (< тип_указателя>)malloc(< объем_ОП>);

    где < имя_указателя> – имя переменной-указателя; < тип_указателя> – тип значения, возвращаемого функцией malloc(); < объем_ОП> – количество байтов ОП, выделяемой адресуемой переменной.

    Например,

    х=(int*)malloc(sizeof(int));

    При этом из кучи выделяется 4 байта ОП для целого значения, а адрес его размещения заносится в указатель х. При таком выделении памяти работоспособность программы не нарушается. Аргумент функции malloc() определяет объем ОП для целого значения с помощью операции определения объема ОП для размещения значения целого типа sizeof(int). Операция (int*), записанная перед функцией, означает, что адрес, возвращаемый функцией malloc(), рассматривается как указатель на переменную целого типа. Это операция приведения типов.

    Таким образом, ошибки не будет при использовании операторов:

    int *х; //x – имя указателя

    x=(int*)malloc(sizeof(int));

    //выделена ОП целому значению, на которое указывает х, и переменой х

    //присваивается адрес выделенной ОП

    *x=123; // переменная, на которую указывает х, получила значение

    // 123

    Освобождение ОП в куче выполняет функция free(). Ее аргументом является имя указателя, содержащего адрес освобождаемой и ранее выделенной динамической памяти, например free(x);






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.