Pokud to děláš na windows ve visual studiu, tak to nespadne, protože se v režimu Debug alokuje vždy více paměti (pár bajtů na začátku i na konci). Je to kvůli ladění a debugger by to měl detekovat. V režimu release už to většinou spadne. Nejlíp to uvidíš, když se podíváš do paměti v okně debuggeru.
Příspěvky odeslané z IP adresy 84.42.162.–
Sice pozdě, ale stejně to napíšu. Spouštění aplikace s & na konci není pro tohle úplně vhodné. V linuxu (ale i v dalších unixech) se takový program píše jako tzv. daemon http://en.wikipedia.org/wiki/Daemon_(computer_software). Pro domácí použití je to sice jedno, ale takhle se to běžně nedělá. Další možnost, pokud ten program nemusí běžet pořád, je nastavit si událost do cronu a pouštět to v pravidelném intervalu.
Jinak se mi ten celý systém dost líbí. Přijde mi to určitě zajímavější, než si koupit něco hotového. Kdybych měl víc času a nebyl jsem tak líný, tak si něco podobného ukutím taky :smile1:
Já bych pro začátečníka vzal od Herouta Učebnice jazyka C. Pro začátečníky jasná volba. Sice to není C++, ale pro začátek to je stejně jedno. Jde o to naučit se principy a další jazyk potom zvládneš lehko. Navíc myslím, že C++ je na FITu stejně až od 2. semestru.
Ta tvoje kniha je vhodná pouze pokud už umíš slušně programovat v jiném jazyce.
Používáš statické proměnné(out a in) a ty jsou společné pro všechny instance. To znamená, že při vytvoření nové instance Pripojeni si přepíšeš in a out ve všech vláknech na novou hodnotu.
Tohle nedělej, volání virtuální metody v konstruktoru je "bad practise". Obecně bych to chápal jako chybu v návrhu a nástroje pro statickou analýzu kódu ti to taky omlátí o hlavu. Konstruktor se používá pouze na inicializaci třídy a složitější logika v něm nemá co dělat. Narušuješ tím zapouzdření předka a v některých případech to může i shodit program. Např.
class jedna
{
private int[] a;
public jedna()
{
stihej();
for(int i =0; i < a.Length; i ++) //a je null
{
a[i] = i;
}
}
protected virtual void stihej()
{
Console.WriteLine("stihej");
a = new int[10];
}
}
class dva : jedna
{
public dva()
:base()
{
stihej();
}
new protected override void stihej()
{
Console.WriteLine("nestihej");
}
}
Při vytváření instance dva to, protože a je null.