From a9d635fdb59c6e45ba755d60f8549f285521cca2 Mon Sep 17 00:00:00 2001 From: Paavo Nieminen <paavo.j.nieminen@jyu.fi> Date: Thu, 11 Jun 2015 13:21:05 +0300 Subject: [PATCH] Tyypilliset kommentit muistivuotovapariin. --- 2015/demot/yleispalautteita.txt | 62 +++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/2015/demot/yleispalautteita.txt b/2015/demot/yleispalautteita.txt index 6ee37cc..27c39b7 100644 --- a/2015/demot/yleispalautteita.txt +++ b/2015/demot/yleispalautteita.txt @@ -1,5 +1,67 @@ Yleisiä palautepätkiä, joita tarvitsi copy-pastata useaan vastaukseen. +v01_vaarallisia_ohjelmia +--------------------------- + +Hyväksytään, kun on yritetty tehdä ja kommentoitu prosessia uskottavasti. +EI OLE KUITENKAAN MISSÄÄN NIMESSÄ OIKEIN! Syy: + +Hyväksytään, kun on yritetty tehdä. +EI OLE KUITENKAAN MISSÄÄN NIMESSÄ OIKEIN! Syy: + + + +Toimivalta näyttää. Kohteliasta tosin olisi vapauttaa lopussa vielä c, +koska se on dynaamisesti varattua muistia. Esim. jos nykyinen +pääohjelma refaktoroinnin yhteydessä siirrettäisiin yleiskäyttöiseksi +aliohjelmaksi, niin kyseinen aliohjelma saattaisi epähuomiossa jäädä +vuotamaan muistia osoitteessa c. + +Pääsääntönä tulisi olla tarkkana ja vapauttaa aina eksplisiittisesti +kaikki, mitä on varannutkin. Jäisi se toimintamalli +"selkäytimeen". Tässä esimerkissähän koko ohjelman loppuminen kyllä +vapauttaa kaiken prosessilla käytössä olleen muistin. Todellisia +ongelmia voi tulla prosessien yhteisten resurssien, kuten +viestijonojen tai semaforien kanssa. Näiden osaltahan ei auta edes +uudempien alustakirjastojen turvavyöt, koska vain sovelluksen tekijä +tietää, tuleeko ohjelman vapauttaa resurssi vai jättää se myöhempien +prosessien käyttöön. Näilläkin voi olla kiintiömäärä, jonka loputtua +uutta vastaavaa resurssia ei saa enää varattua. (Ja muistia vievät +toki nämäkin, joskin käyttöjärjestelmän muistialueen puolelta! Ja +viestijonon jäädessä eloon jää sinne myös toistaiseksi +käsittelemättömät viestit viemään oman osansa muistista.) + + + +Huom.. nohevan opiskelijan cross-platform -koodi: + +#if defined(_WIN32) || defined(_WIN64) || defined(OS_WINDOWS) +#include <windows.h> +#else +#include <unistd.h> // for usleep +#endif + +#include<stdio.h> +#include<string.h> +#include<stdlib.h> +//#include "turvavyo.h" + +void sleep_ms(int milliseconds) // cross-platform sleep function +{ +#ifdef WIN32 + Sleep(milliseconds); +#else + usleep(milliseconds * 1000); +#endif +} + + +v02_toteutuskatsaus +--------------------- + + + + d01_sormet_unixiin ------------------- -- GitLab