fy">// Запис за недійсним адресою звільненій пам'яті
char * pStr = (char *) malloc (20);
free (pStr); (pStr, "my string");// Помилка!
// Спроба читання неініціалізованої пам'яті * pStr = (char *) malloc (20); c = pStr [0];// Помилка!
// Функція звільнення пам'яті не відповідає функції виділення
char * s = (char *) malloc (5); s ;//Помилка!
// Вихід за межі стекаstackUnderrun ()
{array [10]; (array, "my string"); len = strlen (array); (array [len]! = "Z")// Помилка! -;
}
Помилки багатопоточності
Найбільш поширені помилки багатопоточності - це В«гонкиВ» (Data Races), або конкуруючий доступ потоків до даними, і взаімоблокіровкі (Deadlocks), коли, захопивши неправильно розставлені об'єкти синхронізації, потоки самозаблокіровалісь і не можуть продовжити своє виконання.
Приклад помилки, яка рано чи пізно призведе до В«зависанняВ» програми, представлена ​​в прикладі нижче.
// Потік A захоплює критичну секцію L1, потім чекає критичну секцію L2
DWORD WINAPI threadA (LPVOID arg)
{(& L1); (& L2); (data1, data2); (& L2); (& L1);
return (0);
}
// Поток У захоплює критичну секцію L2, потім чекає секцію L1
DWORD WINAPI threadB (LPVOID arg)
{(& L2); (& L1); (data2, data1); (& L1); (& L2); (0);
}
Intel В® Parallel Amplifier
Профилировщик продуктивності призначений для того, щоб з'ясувати, наскільки ефективно використовується мультипроцесорна платформа додатком, і де знаходяться ті вузькі місця в програмі, які заважають їй масштабироваться і збільшувати продуктивність із зростанням обчислювальних ядер в системі. Методологія профилировки додатки гранично проста: необхідно відповісти собі на три основні питання, кожен з яких відповідає своєму типу аналізу і відображає суть, місце і причини проблем з продуктивністю. p align="justify"> Hotspot-аналіз. В«На що моя програма витрачає обчислювальний час процесора?В» Нам необхідно знати ті місця в програмі, Hotspot-функції, де найбільше витрачається обчислювальних ресурсів при виконанні, а також той шлях, по якому ми в ці місця потрапили, тобто стек викликів.
Concurrency-аналіз. В«Чому моя програма погано паралелі?В» Буває, що незалежно від того, наскільки просунута паралельна інфраструктура додатки, очікуваний приріст продуктивності при переході наприклад від 4-ядерної системі до 8-ядерної так і не досягається. Тому тут потрібна о...