<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Ist C++ weiblich?]]></title><description><![CDATA[<p>Hallo Profis,</p>
<p>ich schreibe gerade ein etwas umfangreicheres (für meine Verhältnisse) Programm in C++ und bin an einem Punkt, wo ich meinen Glauben zu Verlieren drohe.</p>
<p>Das Programm läuft, wenn ich am Anfang des Programms eine Ausgabe auf der Kommandozeile mache... wenn nicht, kommt eine Zugriffs-Exception.</p>
<p>Anbei der Code-Ausschnitt (die komplette Routine am Ende):</p>
<pre><code>int main(){
	//Lokal variables
	char **Puffer = NULL; unsigned long nPuffer = 0;
	unsigned long EndLineNode = 0, EndLineBar = 0,  EndLineFace = 0, EndLineElement = 0, MaxExternalNodeNumber = 0;
	string *SPuffer = NULL, line;
	unsigned long fi = 0, fj = 0, fk = 0, fl = 0, nLines = 0;
	time_t start = time(NULL), stop;
	unsigned long NeedSeconds = 0;

	cout &lt;&lt; ++fk &lt;&lt; endl; //Hier ist die Kommandozeilenausgabe!!!!

	//Try to open file...
	fstream MeshFile;
	MeshFile.open(MeshFileName, ios::in);

	//Checking if file is opened...
	if (!MeshFile){return 1;}

	//Getting Size of Meshfile
	nLines = MyFileFunctions::GetNastranLineNumber(MeshFileName, 81);

	//Allocating memory to store file containment
	Puffer = (char**)calloc(nLines, sizeof(char*));
	if (Puffer == NULL){ return 2; }

//Und so weiter...
</code></pre>
<p>So läuft der Code wunderbar. Kommentiere ich die Zeile</p>
<pre><code>cout &lt;&lt; ++fk &lt;&lt; endl;
</code></pre>
<p>aus, dann plopt auf einmal ein Fenster von crtexe.c auf und springt zu folgender Codestelle:</p>
<pre><code>#ifdef WPRFLAG
            mainret = wWinMain(
#else  /* WPRFLAG */
            mainret = WinMain(
#endif  /* WPRFLAG */
                       (HINSTANCE)&amp;__ImageBase,
                       NULL,
                       lpszCommandLine,
                       showWindowMode
                      );
#else  /* _WINMAIN_ */

#ifdef WPRFLAG
            __winitenv = envp;
            mainret = wmain(argc, argv, envp);
#else  /* WPRFLAG */
            __initenv = envp;
            mainret = main(argc, argv, envp);
#endif  /* WPRFLAG */

#endif  /* _WINMAIN_ */
</code></pre>
<p>Darüber hinaus kommt eine Fehlermeldung:<br />
Ausnahmefehler bei 0x01183CF in Main.exe: 0xC0000005:<br />
Zugriffsverletzung beim Lesen an Position 0xFC874A2C</p>
<p>Ok, er greift wohl auf Speicher zu, auf den er nicht zugreifen darf.<br />
Kann es sein, dass ++fk nur dazu führt, dass er weiterhin auf falschen, aber<br />
les/beschreibbaren Speicher zugreift?</p>
<p>Sowas habe ich auch noch nicht erlebt...</p>
<p>Zusatz:<br />
Also, ich konnte beobachten, dass der Fehler auch unabhängig vom Auskommentieren auftritt, wenn ich die Optimierungsstufe hochschraube und damit verbunden die Laufzeitkontrolle deaktiviere.</p>
<p>Darüber hinaus tritt der Fehler erst im späteren Verlauf des Programms auf...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/324057/ist-c-weiblich</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 10:30:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/324057.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 01 Mar 2014 09:22:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ist C++ weiblich? on Sat, 01 Mar 2014 09:30:29 GMT]]></title><description><![CDATA[<p>Hallo Profis,</p>
<p>ich schreibe gerade ein etwas umfangreicheres (für meine Verhältnisse) Programm in C++ und bin an einem Punkt, wo ich meinen Glauben zu Verlieren drohe.</p>
<p>Das Programm läuft, wenn ich am Anfang des Programms eine Ausgabe auf der Kommandozeile mache... wenn nicht, kommt eine Zugriffs-Exception.</p>
<p>Anbei der Code-Ausschnitt (die komplette Routine am Ende):</p>
<pre><code>int main(){
	//Lokal variables
	char **Puffer = NULL; unsigned long nPuffer = 0;
	unsigned long EndLineNode = 0, EndLineBar = 0,  EndLineFace = 0, EndLineElement = 0, MaxExternalNodeNumber = 0;
	string *SPuffer = NULL, line;
	unsigned long fi = 0, fj = 0, fk = 0, fl = 0, nLines = 0;
	time_t start = time(NULL), stop;
	unsigned long NeedSeconds = 0;

	cout &lt;&lt; ++fk &lt;&lt; endl; //Hier ist die Kommandozeilenausgabe!!!!

	//Try to open file...
	fstream MeshFile;
	MeshFile.open(MeshFileName, ios::in);

	//Checking if file is opened...
	if (!MeshFile){return 1;}

	//Getting Size of Meshfile
	nLines = MyFileFunctions::GetNastranLineNumber(MeshFileName, 81);

	//Allocating memory to store file containment
	Puffer = (char**)calloc(nLines, sizeof(char*));
	if (Puffer == NULL){ return 2; }

//Und so weiter...
</code></pre>
<p>So läuft der Code wunderbar. Kommentiere ich die Zeile</p>
<pre><code>cout &lt;&lt; ++fk &lt;&lt; endl;
</code></pre>
<p>aus, dann plopt auf einmal ein Fenster von crtexe.c auf und springt zu folgender Codestelle:</p>
<pre><code>#ifdef WPRFLAG
            mainret = wWinMain(
#else  /* WPRFLAG */
            mainret = WinMain(
#endif  /* WPRFLAG */
                       (HINSTANCE)&amp;__ImageBase,
                       NULL,
                       lpszCommandLine,
                       showWindowMode
                      );
#else  /* _WINMAIN_ */

#ifdef WPRFLAG
            __winitenv = envp;
            mainret = wmain(argc, argv, envp);
#else  /* WPRFLAG */
            __initenv = envp;
            mainret = main(argc, argv, envp);
#endif  /* WPRFLAG */

#endif  /* _WINMAIN_ */
</code></pre>
<p>Darüber hinaus kommt eine Fehlermeldung:<br />
Ausnahmefehler bei 0x01183CF in Main.exe: 0xC0000005:<br />
Zugriffsverletzung beim Lesen an Position 0xFC874A2C</p>
<p>Ok, er greift wohl auf Speicher zu, auf den er nicht zugreifen darf.<br />
Kann es sein, dass ++fk nur dazu führt, dass er weiterhin auf falschen, aber<br />
les/beschreibbaren Speicher zugreift?</p>
<p>Sowas habe ich auch noch nicht erlebt...</p>
<p>Zusatz:<br />
Also, ich konnte beobachten, dass der Fehler auch unabhängig vom Auskommentieren auftritt, wenn ich die Optimierungsstufe hochschraube und damit verbunden die Laufzeitkontrolle deaktiviere.</p>
<p>Darüber hinaus tritt der Fehler erst im späteren Verlauf des Programms auf...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2385894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2385894</guid><dc:creator><![CDATA[CJens]]></dc:creator><pubDate>Sat, 01 Mar 2014 09:30:29 GMT</pubDate></item><item><title><![CDATA[Reply to Ist C++ weiblich? on Sat, 01 Mar 2014 09:36:59 GMT]]></title><description><![CDATA[<p>CJens schrieb:</p>
<blockquote>
<p>Hallo Profis,</p>
<p>ich schreibe gerade ein etwas umfangreicheres (für meine Verhältnisse) Programm in C++ und bin an einem Punkt, wo ich meinen Glauben zu Verlieren drohe.</p>
<p>Das Programm läuft, wenn ich am Anfang des Programms eine Ausgabe auf der Kommandozeile mache... wenn nicht, kommt eine Zugriffs-Exception.</p>
<p>Anbei der Code-Ausschnitt (die komplette Routine am Ende):</p>
<pre><code>int main(){
	//Lokal variables
	char **Puffer = NULL; unsigned long nPuffer = 0;
	unsigned long EndLineNode = 0, EndLineBar = 0,  EndLineFace = 0, EndLineElement = 0, MaxExternalNodeNumber = 0;
	string *SPuffer = NULL, line;
	unsigned long fi = 0, fj = 0, fk = 0, fl = 0, nLines = 0;
	time_t start = time(NULL), stop;
	unsigned long NeedSeconds = 0;

	cout &lt;&lt; ++fk &lt;&lt; endl; //Hier ist die Kommandozeilenausgabe!!!!

	//Try to open file...
	fstream MeshFile;
	MeshFile.open(MeshFileName, ios::in);
		
	//Checking if file is opened...
	if (!MeshFile){return 1;}

	//Getting Size of Meshfile
	nLines = MyFileFunctions::GetNastranLineNumber(MeshFileName, 81);

	//Allocating memory to store file containment
	Puffer = (char**)calloc(nLines, sizeof(char*));
	if (Puffer == NULL){ return 2; }

//Und so weiter...
</code></pre>
<p>So läuft der Code wunderbar. Kommentiere ich die Zeile</p>
<pre><code>cout &lt;&lt; ++fk &lt;&lt; endl;
</code></pre>
<p>aus, dann plopt auf einmal ein Fenster von crtexe.c auf und springt zu folgender Codestelle:</p>
<pre><code>#ifdef WPRFLAG
            mainret = wWinMain(
#else  /* WPRFLAG */
            mainret = WinMain(
#endif  /* WPRFLAG */
                       (HINSTANCE)&amp;__ImageBase,
                       NULL,
                       lpszCommandLine,
                       showWindowMode
                      );
#else  /* _WINMAIN_ */

#ifdef WPRFLAG
            __winitenv = envp;
            mainret = wmain(argc, argv, envp);
#else  /* WPRFLAG */
            __initenv = envp;
            mainret = main(argc, argv, envp);
#endif  /* WPRFLAG */

#endif  /* _WINMAIN_ */
</code></pre>
<p>Darüber hinaus kommt eine Fehlermeldung:<br />
Ausnahmefehler bei 0x01183CF in Main.exe: 0xC0000005:<br />
Zugriffsverletzung beim Lesen an Position 0xFC874A2C</p>
<p>Ok, er greift wohl auf Speicher zu, auf den er nicht zugreifen darf.<br />
Kann es sein, dass ++fk nur dazu führt, dass er weiterhin auf falschen, aber<br />
les/beschreibbaren Speicher zugreift?</p>
<p>Sowas habe ich auch noch nicht erlebt...</p>
<p>Zusatz:<br />
Also, ich konnte beobachten, dass der Fehler auch unabhängig vom Auskommentieren auftritt, wenn ich die Optimierungsstufe hochschraube und damit verbunden die Laufzeitkontrolle deaktiviere.</p>
<p>Der Fehler tritt auf, bevor das Programm startet. Eigentlich wollte ich mit den couts feststellen, wo das Programm abstürzt... und dann hab ich es durch Holding-Points versucht... aber er kommt nichtmal zu ersten (der Anfang)...</p>
<p>Sorry für das Doppelposting - wollte editieren, nicht zitieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /></p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2385898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2385898</guid><dc:creator><![CDATA[CJens]]></dc:creator><pubDate>Sat, 01 Mar 2014 09:36:59 GMT</pubDate></item><item><title><![CDATA[Reply to Ist C++ weiblich? on Sat, 01 Mar 2014 09:41:21 GMT]]></title><description><![CDATA[<p>Nun es liegt wohl daran, dass du manuell Speicher verwaltest (und das sogar mit C-Funktionen!).<br />
Ich schätze mal, dass du dir via *alloc Speicher für einen std::string holst. Dabei wird aber kein Konstruktor aufgerufen, dass string-Objekt ist somit kaputt und - peng!</p>
<p>Edit: Auch sonst programmierst du in C++ so, als wäre es noch C.<br />
Variablen kann man in C++ erst dann erstellen, wenn man sie wirklich benötigt und nicht am Anfang von main. Zur Fehlerbehandlung verwendet man auch normalerweise Exceptions und keine Fehlercodes.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2385899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2385899</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sat, 01 Mar 2014 09:41:21 GMT</pubDate></item><item><title><![CDATA[Reply to Ist C++ weiblich? on Sat, 01 Mar 2014 09:53:38 GMT]]></title><description><![CDATA[<p>...aber die Deklaration von SPuffer als String ist ohne Funktion. Ich habe es vorher mal auch mit Strings versucht... bin dann aber beim Char-Array geblieben, da ich später eine Datei lese (und das möglichst schnell) die formatiert ist.</p>
<p>Also...</p>
<pre><code>string *SPuffer = NULL, line;
</code></pre>
<p>...können wir auch gerne aus dem Code löschen und alle Strings.</p>
<p>Ja, ich habe lange natives C programmiert und steige jetzt wegen der Parallelisierungsmöglichkeiten und der Kompatibilität zu C# um.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2385902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2385902</guid><dc:creator><![CDATA[CJens]]></dc:creator><pubDate>Sat, 01 Mar 2014 09:53:38 GMT</pubDate></item><item><title><![CDATA[Reply to Ist C++ weiblich? on Sat, 01 Mar 2014 10:02:31 GMT]]></title><description><![CDATA[<p>Dann müssen wir mehr Code sehen.</p>
<blockquote>
<p>da ich später eine Datei lese (und das möglichst schnell) die formatiert ist</p>
</blockquote>
<p>Nimm trotzdem std::string. Der Code ist einfacher, exception sicherer, bugfreier und mit guter Wahrscheinlichkeit sogar schneller.<br />
Außerdem wird die meiste I/O-Zeit damit verbracht, die eigentlichen rohen Daten zu lesen, anstatt die Neuinterpretation danach (80-20-Rule btw).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2385903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2385903</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sat, 01 Mar 2014 10:02:31 GMT</pubDate></item></channel></rss>