Ведутся технические работы. Это может временно повлиять на скорость работы сайта. Приносим извинения за неудобства и благодарим за ваше понимание!

11. CS50 на русском: Лекция #11 [Гарвард, Основы программирования, осень 2015 год]

Доп. материалы и задачи к лекции —
https://javarush.com/s/level_5
Весь курс CS50 — https://javarush.com/s/course_cs50

Гарвард CS50, 11 лекция: перестаем бояться указателей и работаем с памятью

Работа с памятью и указателями, пожалуй, — один из самых сложных моментов CS50. Даже опытные программисты часто ошибаются и заваливают систему из-за утечек памяти, чего уж тут говорить о новичках. Но нам повезло: CS50 — отличный курс, поэтому нам нечего бояться. В 11 лекции мы кое-что изучим, а кое-что повторим вот о чем:

• Почему не стоит ждать ничего хорошего от разыменовывания «мусорных» значений или недействующих указателей.
• scanf(“%i”, &x) — что значит & в этой записи
• char* и string — что между ними общего?
• Как правильно выделять память, чтобы не было ошибки сегментации
• Изучаем работу с памятью на примере функций библиотеки CS50 и… постепенно отказываемся от неё, как от ходунков.
• Valgrind – мощный инструмент для поиска утечек памяти, начинаем с ним работать.
• Связные списки Linkedlist в Си: как с ними работать, чем они лучше массивов, а чем — хуже.
• Что общего у стека и стопки подносов в столовой?

( ! ) Warning: Invalid argument supplied for foreach() in /home/domains/malitikov.ru/public_html/wp-content/themes/malitikov/single.php on line 44
Call Stack
#TimeMemoryFunctionLocation
10.0000350408{main}( ).../index.php:0
20.0000350688require( '/home/domains/malitikov.ru/public_html/wp-blog-header.php ).../index.php:17
30.14108505560require_once( '/home/domains/malitikov.ru/public_html/wp-includes/template-loader.php ).../wp-blog-header.php:19
40.14268509736include( '/home/domains/malitikov.ru/public_html/wp-content/themes/malitikov/single.php ).../template-loader.php:106

Мы рекомендуем


( ! ) Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 67108872 bytes) in /home/domains/malitikov.ru/public_html/wp-includes/class-wpdb.php on line 2323
Call Stack
#TimeMemoryFunctionLocation
10.0000350408{main}( ).../index.php:0
20.0000350688require( '/home/domains/malitikov.ru/public_html/wp-blog-header.php ).../index.php:17
30.14108505560require_once( '/home/domains/malitikov.ru/public_html/wp-includes/template-loader.php ).../wp-blog-header.php:19
40.14268509736include( '/home/domains/malitikov.ru/public_html/wp-content/themes/malitikov/single.php ).../template-loader.php:106
50.429222714528WP_Query->__construct( $query = ['post_type' => 'post', 'post_status' => 'publish', 'fields' => 'ids', 'posts_per_page' => -1, 'no_found_rows' => TRUE, 'orderby' => 'none'] ).../single.php:65
60.429222714528WP_Query->query( $query = ['post_type' => 'post', 'post_status' => 'publish', 'fields' => 'ids', 'posts_per_page' => -1, 'no_found_rows' => TRUE, 'orderby' => 'none'] ).../class-wp-query.php:4081
70.429222714528WP_Query->get_posts( ).../class-wp-query.php:3949
80.429622726392wpdb->get_col( $query = 'SELECT wp_posts.ID\n\t\t\t\t\t FROM wp_posts \n\t\t\t\t\t WHERE 1=1 AND wp_posts.post_type = \'post\' AND ((wp_posts.post_status = \'publish\'))\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t ', $x = ??? ).../class-wp-query.php:3300
90.429722726392wpdb->query( $query = 'SELECT wp_posts.ID\n\t\t\t\t\t FROM wp_posts \n\t\t\t\t\t WHERE 1=1 AND wp_posts.post_type = \'post\' AND ((wp_posts.post_status = \'publish\'))\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t ' ).../class-wpdb.php:3107