Portál AbcLinuxu, 30. března 2024 03:46
#include <string> int main () { std::string(""); std::bool(true); return 0; }Proc nefunguje a co udelat, aby fungoval? Poznamka: nemuzu pouzit
using namespace std;
. Diky
#include <string> int main(int, char**) { std::string s(""); /* std::string s; udělá to samé rychleji. */ bool b(true); return 0; }Po spuštění to samozřejmě akorát po chvilce skončí a nic to nevypíše, protože nic nevypisuješ.
Prototyp fce main() máš špatně, kurvíš zásobníkPřečti si standard, main bez parametrů je legální a nic se nekurví
push argumenty push pocet_argumentu call mainA oni se v tý fci main vůbec nezpopujou ... a kde že nám asi zůstali? Na zásobníku. No linux to snad dává místo na zásobník do registrů a tam to nevadí a nepřekáží (teď si nejsem jistý, jestli to není jen pro systémová volání), protože se to přepíše, ale né všechny systémy to tak mají. No a nebo zase plácám kraviny, ale to je jedno ...
A oni se v tý fci main vůbec nezpopujou ... a kde že nám asi zůstali? Na zásobníku.
Ano. A kdy se ten rozdíl projeví? V okamžiku, kdy program řádně skončí (a to ještě jen jedním z možných způsobů) a ta paměť se hned poté tak jako tak uvolní.
#include <iostream>
int main (void) {
std::string aString;
bool aBool = true;
return EXIT_SUCCESS;
}
#include <iostream>
Nebo:
using namespace std;
int main (void) {
string aString;
bool aBool = true;
return EXIT_SUCCESS;
}
Tiskni Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.