SlideShare a Scribd company logo

      
       Язык программирования C 
      
     
      
       Динамическая работа с памятью 
      
     
      
       Алексей Бованенко

      
       Функции для работы с памятью 
      
     
      
       
        
         Заголовочный файл stdlib.h 
        
       
       
        
         
          
           void *malloc ( size_t size  ) 
          
         
        
       
       
        
         
          
           void *calloc ( size_t n , size_t size  ) - каждый байт выделяемой памяти инициализируется 0 
          
         
        
       
       
        
         
          
           void *realloc ( void *ptr , size_t n  )  
          
         
        
       
       
        
         
          
           
            
             ptr == NULL — выделение памяти 
            
           
          
         
        
       
       
        
         
          
           void free ( void *ptr  )

      
       Пример использования  
      
     
      
       
        
         char* ptr=(char *)malloc(10); 
        
       
       
        
         char* ptr=(char *)calloc(10,sizeof(char)); 
        
       
       
        
         char* ptr1=(char *)realloc(20, ptr); 
        
       
       
        
         free(ptr);

      
       Пример использования 
      
     
      
       
        
         char **p; p=(char **)malloc(3*sizeof(int)); *p=(char *)malloc(2); **p='c'; printf("%x\n",**p); p++; *p=(char *)malloc(3); **p='b'; printf("%x\n",**p); p++; *p=(char *)malloc(4); **p='a'; printf("%x\n",**p); free(*p); p--; free(*p); p--; free(*p); free(p);

      
       Конец 
      
     
      
       Вопросы 
       e-mail: a.bovanenko@gmail.com
Ad

More Related Content

What's hot (20)

Красивая 64-битная ошибка на языке Си
Красивая  64-битная ошибка на языке СиКрасивая  64-битная ошибка на языке Си
Красивая 64-битная ошибка на языке Си
Tatyanazaxarova
 
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
Pavel Tsukanov
 
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Mikhail Kurnosov
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
Mikhail Kurnosov
 
Управление памятью в GO
Управление памятью в GOУправление памятью в GO
Управление памятью в GO
ssuserb5dd93
 
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Alexey Paznikov
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Yandex
 
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Mikhail Kurnosov
 
Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)
Mikhail Kurnosov
 
Конвертация строковых данных в числовые
Конвертация строковых данных в числовыеКонвертация строковых данных в числовые
Конвертация строковых данных в числовые
Alexey Bovanenko
 
5.1 Перегрузка операторов
5.1 Перегрузка операторов5.1 Перегрузка операторов
5.1 Перегрузка операторов
DEVTYPE
 
Паттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере TarantoolПаттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере Tarantool
Alexandre Kalendarev
 
Переполнение буфера: лопнуть как мыльный пузырь
Переполнение буфера: лопнуть как мыльный пузырьПереполнение буфера: лопнуть как мыльный пузырь
Переполнение буфера: лопнуть как мыльный пузырь
kzissu
 
Rust: абстракции и безопасность, совершенно бесплатно
Rust: абстракции и безопасность, совершенно бесплатноRust: абстракции и безопасность, совершенно бесплатно
Rust: абстракции и безопасность, совершенно бесплатно
Open-IT
 
стандартная библиотека с++: введение
стандартная библиотека с++: введениестандартная библиотека с++: введение
стандартная библиотека с++: введение
mcroitor
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
Mikhail Kurnosov
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Mikhail Kurnosov
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
Mikhail Kurnosov
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Mikhail Kurnosov
 
особенности программирования на с++
особенности программирования на с++особенности программирования на с++
особенности программирования на с++
mcroitor
 
Красивая 64-битная ошибка на языке Си
Красивая  64-битная ошибка на языке СиКрасивая  64-битная ошибка на языке Си
Красивая 64-битная ошибка на языке Си
Tatyanazaxarova
 
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
Pavel Tsukanov
 
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Mikhail Kurnosov
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
Mikhail Kurnosov
 
Управление памятью в GO
Управление памятью в GOУправление памятью в GO
Управление памятью в GO
ssuserb5dd93
 
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Alexey Paznikov
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Yandex
 
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Mikhail Kurnosov
 
Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)
Mikhail Kurnosov
 
Конвертация строковых данных в числовые
Конвертация строковых данных в числовыеКонвертация строковых данных в числовые
Конвертация строковых данных в числовые
Alexey Bovanenko
 
5.1 Перегрузка операторов
5.1 Перегрузка операторов5.1 Перегрузка операторов
5.1 Перегрузка операторов
DEVTYPE
 
Паттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере TarantoolПаттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере Tarantool
Alexandre Kalendarev
 
Переполнение буфера: лопнуть как мыльный пузырь
Переполнение буфера: лопнуть как мыльный пузырьПереполнение буфера: лопнуть как мыльный пузырь
Переполнение буфера: лопнуть как мыльный пузырь
kzissu
 
Rust: абстракции и безопасность, совершенно бесплатно
Rust: абстракции и безопасность, совершенно бесплатноRust: абстракции и безопасность, совершенно бесплатно
Rust: абстракции и безопасность, совершенно бесплатно
Open-IT
 
стандартная библиотека с++: введение
стандартная библиотека с++: введениестандартная библиотека с++: введение
стандартная библиотека с++: введение
mcroitor
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
Mikhail Kurnosov
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Mikhail Kurnosov
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
Mikhail Kurnosov
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Mikhail Kurnosov
 
особенности программирования на с++
особенности программирования на с++особенности программирования на с++
особенности программирования на с++
mcroitor
 

Viewers also liked (7)

ZIP, GZIP Streams in java
ZIP, GZIP Streams in javaZIP, GZIP Streams in java
ZIP, GZIP Streams in java
Alexey Bovanenko
 
File. Java
File. JavaFile. Java
File. Java
Alexey Bovanenko
 
Java IO. Streams
Java IO. StreamsJava IO. Streams
Java IO. Streams
Alexey Bovanenko
 
Ad

More from Alexey Bovanenko (20)

Python sqlite3
Python sqlite3Python sqlite3
Python sqlite3
Alexey Bovanenko
 
Python. re
Python. rePython. re
Python. re
Alexey Bovanenko
 
python dict
python dictpython dict
python dict
Alexey Bovanenko
 
Python. Строки
Python. СтрокиPython. Строки
Python. Строки
Alexey Bovanenko
 
Python. Введение
Python. ВведениеPython. Введение
Python. Введение
Alexey Bovanenko
 
Обработка символов в языке C
Обработка символов в языке CОбработка символов в языке C
Обработка символов в языке C
Alexey Bovanenko
 
Javascript String object
Javascript String objectJavascript String object
Javascript String object
Alexey Bovanenko
 
Конструктор копирования
Конструктор копированияКонструктор копирования
Конструктор копирования
Alexey Bovanenko
 
Tempale Intro
Tempale IntroTempale Intro
Tempale Intro
Alexey Bovanenko
 
transaction. php
transaction. phptransaction. php
transaction. php
Alexey Bovanenko
 
cookie. support by php
cookie. support by phpcookie. support by php
cookie. support by php
Alexey Bovanenko
 
php sessions
php sessionsphp sessions
php sessions
Alexey Bovanenko
 
Regular Expressions
Regular ExpressionsRegular Expressions
Regular Expressions
Alexey Bovanenko
 
Classes: Number, String, StringBuffer, StringBuilder
Classes: Number, String, StringBuffer, StringBuilderClasses: Number, String, StringBuffer, StringBuilder
Classes: Number, String, StringBuffer, StringBuilder
Alexey Bovanenko
 
Исключительные ситуации
Исключительные ситуацииИсключительные ситуации
Исключительные ситуации
Alexey Bovanenko
 
Ad

Dynamic memory

  • 1. Язык программирования C Динамическая работа с памятью Алексей Бованенко
  • 2. Функции для работы с памятью Заголовочный файл stdlib.h void *malloc ( size_t size ) void *calloc ( size_t n , size_t size ) - каждый байт выделяемой памяти инициализируется 0 void *realloc ( void *ptr , size_t n ) ptr == NULL — выделение памяти void free ( void *ptr )
  • 3. Пример использования char* ptr=(char *)malloc(10); char* ptr=(char *)calloc(10,sizeof(char)); char* ptr1=(char *)realloc(20, ptr); free(ptr);
  • 4. Пример использования char **p; p=(char **)malloc(3*sizeof(int)); *p=(char *)malloc(2); **p='c'; printf("%x\n",**p); p++; *p=(char *)malloc(3); **p='b'; printf("%x\n",**p); p++; *p=(char *)malloc(4); **p='a'; printf("%x\n",**p); free(*p); p--; free(*p); p--; free(*p); free(p);
  • 5. Конец Вопросы e-mail: [email protected]