<?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[[Gelöst (siehe unten)] Speicherzugriffsfehler bei string Initialisierung]]></title><description><![CDATA[<p>Hallo,</p>
<p>erster Beitrag und C++-Neuling, hoffe ich mache formell alles richtig :-).<br />
Folgender kleiner Hilferuf:</p>
<pre><code>int main(int argc, char* argv[]) {
	// *** std::string kopfzeile( &quot;Kapitel 1&quot; );
	// std::cout &lt;&lt; kopfzeile &lt;&lt; std::endl;
	Initialize(argc, argv);
	InitWindow( TITLE );
	glutMainLoop();
	exit(EXIT_SUCCESS);
}
</code></pre>
<p>Ich weiß, eigentlich ist das C und kein C++. Das Programm läuft so auch prima, Wenn ich aber die Zeile mit den drei Sternchen mit aufnehme gibt's einen Speicherzugriffsfehler. GDB hilft nicht weiter, vermutlich weil mir von irgendeiner Bibliothek die Debug-Symbole fehlen.</p>
<p>Neben den OpenGL-libs glew, gl und freeglut lade ich noch string und cstdlib. Eclipse ist meine IDE, aber auch von der Kommandozeile kompiliert stürzt die Sache ab.</p>
<p>Irgendjemand eine Idee ?</p>
<p>Beste Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/338775/gelöst-siehe-unten-speicherzugriffsfehler-bei-string-initialisierung</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 04:37:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/338775.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 09 Jul 2016 19:03:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Gelöst (siehe unten)] Speicherzugriffsfehler bei string Initialisierung on Sat, 09 Jul 2016 20:04:36 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>erster Beitrag und C++-Neuling, hoffe ich mache formell alles richtig :-).<br />
Folgender kleiner Hilferuf:</p>
<pre><code>int main(int argc, char* argv[]) {
	// *** std::string kopfzeile( &quot;Kapitel 1&quot; );
	// std::cout &lt;&lt; kopfzeile &lt;&lt; std::endl;
	Initialize(argc, argv);
	InitWindow( TITLE );
	glutMainLoop();
	exit(EXIT_SUCCESS);
}
</code></pre>
<p>Ich weiß, eigentlich ist das C und kein C++. Das Programm läuft so auch prima, Wenn ich aber die Zeile mit den drei Sternchen mit aufnehme gibt's einen Speicherzugriffsfehler. GDB hilft nicht weiter, vermutlich weil mir von irgendeiner Bibliothek die Debug-Symbole fehlen.</p>
<p>Neben den OpenGL-libs glew, gl und freeglut lade ich noch string und cstdlib. Eclipse ist meine IDE, aber auch von der Kommandozeile kompiliert stürzt die Sache ab.</p>
<p>Irgendjemand eine Idee ?</p>
<p>Beste Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2501719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501719</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sat, 09 Jul 2016 20:04:36 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst (siehe unten)] Speicherzugriffsfehler bei string Initialisierung on Sat, 09 Jul 2016 19:20:09 GMT]]></title><description><![CDATA[<p>Was ist Initialize, InitWindow, TITLE?<br />
Was steht in argc, argv?<br />
Linux?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2501720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501720</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sat, 09 Jul 2016 19:20:09 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst (siehe unten)] Speicherzugriffsfehler bei string Initialisierung on Sat, 09 Jul 2016 19:30:20 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>argc, argv sind in dem Falle standard nach Programmaufruf, also nur der Programmname. Sollen auch exact so nach Doku von OpenGL weitergegeben werden. Da könnten Dinge rein wie &quot;-gldebug&quot; oder &quot;-nosync&quot; o. ä.</p>
<p>TITLE ist eine Zeichenkette #define'd (das will ich ja loswerden mit dem string), Die beiden Funktionen initielisieren gl und glut und machen dann ein Grafik-Fenster auf, das klappt auch alles.</p>
<p>Ja, Linux, g++ 4.9.2.</p>
<p>Es ist diese eine Zeile die den Unterschied und mich nachdenklich macht ...</p>
<p>??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2501721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501721</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sat, 09 Jul 2016 19:30:20 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst (siehe unten)] Speicherzugriffsfehler bei string Initialisierung on Sat, 09 Jul 2016 19:40:59 GMT]]></title><description><![CDATA[<p>Warum zeigst du nicht den kompletten Code? Können ja eigentlich höchstens 5 Zeilen mehr sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2501722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501722</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sat, 09 Jul 2016 19:40:59 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst (siehe unten)] Speicherzugriffsfehler bei string Initialisierung on Sat, 09 Jul 2016 20:03:30 GMT]]></title><description><![CDATA[<p>Edit: Ich hab's ! Aus einem OpenGL-Form: dem Compiler -pthread und dem Linker -lpthread mitgeben und es tut.<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
<p>Wollte euch nicht zumüllen. Das ist der komplette Code:</p>
<pre><code>#include &lt;cstdlib&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;GL/glew.h&gt;
#include &lt;GL/freeglut.h&gt;

#define TITLE &quot;Chapter 1&quot;

int CurrentWidth = 800,
	CurrentHeight = 600,
	WindowHandle = 0;

void Initialize(int, char*[]);
void InitWindow( const char* );
void ResizeFunction(int, int);
void RenderFunction(void);

int main(int argc, char* argv[]) {
	// std::string kopfzeile( &quot;Kapitel 1&quot; );
	// std::cout &lt;&lt; kopfzeile &lt;&lt; std::endl;
	Initialize(argc, argv);
	InitWindow( TITLE );
	// std::string Kopf( &quot;Fuß !&quot; );
	glutMainLoop();
	exit(EXIT_SUCCESS);
}

void Initialize(int argc, char* argv[]) {
	glutInit(&amp;argc, argv);
	// glutInitContextVersion(4, 0);
	// glutInitContextFlags(GLUT_FORWARD_COMPATIBLE);
	// glutInitContextProfile(GLUT_CORE_PROFILE);
	glutSetOption( GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_GLUTMAINLOOP_RETURNS );
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
}

void InitWindow( const char* t ) {
    glutInitWindowSize(CurrentWidth, CurrentHeight);
    WindowHandle = glutCreateWindow(t);
    if(WindowHandle &lt; 1) exit(EXIT_FAILURE);
    glutReshapeFunc(ResizeFunction);
    glutDisplayFunc(RenderFunction);
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
}

void ResizeFunction(int Width, int Height) {
	CurrentWidth = Width;
	CurrentHeight = Height;
	glViewport(0, 0, CurrentWidth, CurrentHeight);
}

void RenderFunction(void) {
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glutSwapBuffers();
	glutPostRedisplay();
}
</code></pre>
<p>Es ist ein Beispiel aus einem OpenGL-Tutorial. Wollte die beiden Init-Funktionen in ein Singleton umbauen, erste Schritte sozusagen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
<p>Dem Linker gab ich -lGL -lGLEW -lglut auf den Weg.</p>
<p>Jetzt hab ich die ganze Sache mal runtereduziert:</p>
<pre><code>// #include &lt;cstdlib&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;

int main( int argc, char* argv[] ) {
	std::string kopfzeile( &quot;Kapitel 1&quot; );
	std::cout &lt;&lt; &quot;Test&quot; &lt;&lt; std::endl;
	return 0;
}
</code></pre>
<p>Das stürzt ab.</p>
<p>Mit auskommentierter erster Zeile nicht. Wenn ich die o. g. OpenGL-Bibliotheken nicht dazulinke läuft es. Ich denke ich muß in OpenGL-Foren weitersuchen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2501723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501723</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sat, 09 Jul 2016 20:03:30 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst (siehe unten)] Speicherzugriffsfehler bei string Initialisierung on Sun, 10 Jul 2016 07:23:23 GMT]]></title><description><![CDATA[<p>GreenBaron schrieb:</p>
<blockquote>
<p>Dem Linker gab ich -lGL -lGLEW -lglut auf den Weg.</p>
<p>Jetzt hab ich die ganze Sache mal runtereduziert:</p>
<pre><code>// #include &lt;cstdlib&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;

int main( int argc, char* argv[] ) {
	std::string kopfzeile( &quot;Kapitel 1&quot; );
	std::cout &lt;&lt; &quot;Test&quot; &lt;&lt; std::endl;
	return 0;
}
</code></pre>
<p>Das stürzt ab.</p>
<p>Mit auskommentierter erster Zeile nicht. Wenn ich die o. g. OpenGL-Bibliotheken nicht dazulinke läuft es. Ich denke ich muß in OpenGL-Foren weitersuchen ...</p>
</blockquote>
<p>Soweit ich weiß verwirft der Linker eine library, wenn von dieser keinerlei methoden im programm verwendet werden.<br />
Wenn ich recht habe, dann kann es nicht am dazu linken von ungenützten libs zum crash führen.</p>
<p>Kannst du mal die ausgabe</p>
<pre><code>ldd &lt;binary&gt;
</code></pre>
<p>von deinem reduzierten beispiel hier posten?</p>
<p>Edit: ok ich lag falsch. Der linker fügt auch ungenutzte libraries dem programm als abhängigkeit hinzu.<br />
Das kann man verhindern, wenn man vor der angabe der libs, welche dazu gelinkt werden soll den linker paramerter &quot;--as-needed&quot; hinzufügt.</p>
<pre><code>gcc test.cpp  -Wl,--as-needed  -lGL -lGLEW -lglut
</code></pre>
<p>Dann scheint bei dir irgendetwas mit der OpenGL lib (libGL) oder GLEW/glut &quot;kaputt&quot; zu sein.<br />
Denn bei mir stützt das minimal beispiel nicht ab, wenn ich es wie folgt übersetze:</p>
<pre><code>gcc test.cpp  -lGL -lGLEW -lglut
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2501740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501740</guid><dc:creator><![CDATA[firefly]]></dc:creator><pubDate>Sun, 10 Jul 2016 07:23:23 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst (siehe unten)] Speicherzugriffsfehler bei string Initialisierung on Sun, 10 Jul 2016 15:16:52 GMT]]></title><description><![CDATA[<p>Hallo firefly,</p>
<p>hier die ldd-Ausgabe:</p>
<pre><code>linux-vdso.so.1 (0x00007fff81f11000)
	libglut.so.3 =&gt; /usr/lib/x86_64-linux-gnu/libglut.so.3 (0x00007f5aefb68000)
	libGL.so.1 =&gt; /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007f5aef81c000)
	libGLEW.so.1.10 =&gt; /usr/lib/x86_64-linux-gnu/libGLEW.so.1.10 (0x00007f5aef590000)
	libstdc++.so.6 =&gt; /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f5aef285000)
	libm.so.6 =&gt; /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5aeef84000)
	libgcc_s.so.1 =&gt; /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f5aeed6e000)
	libc.so.6 =&gt; /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5aee9c3000)
	libXext.so.6 =&gt; /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f5aee7b1000)
	libX11.so.6 =&gt; /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f5aee46e000)
	libXi.so.6 =&gt; /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007f5aee25e000)
	libXxf86vm.so.1 =&gt; /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x00007f5aee058000)
	libnvidia-tls.so.340.96 =&gt; /usr/lib/x86_64-linux-gnu/tls/libnvidia-tls.so.340.96 (0x00007f5aede55000)
	libnvidia-glcore.so.340.96 =&gt; /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.340.96 (0x00007f5aeb241000)
	libdl.so.2 =&gt; /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f5aeb03d000)
	libXmu.so.6 =&gt; /usr/lib/x86_64-linux-gnu/libXmu.so.6 (0x00007f5aeae24000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f5aefdb3000)
	libxcb.so.1 =&gt; /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f5aeac02000)
	libXt.so.6 =&gt; /usr/lib/x86_64-linux-gnu/libXt.so.6 (0x00007f5aea999000)
	libXau.so.6 =&gt; /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f5aea795000)
	libXdmcp.so.6 =&gt; /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f5aea590000)
	libSM.so.6 =&gt; /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00007f5aea388000)
	libICE.so.6 =&gt; /usr/lib/x86_64-linux-gnu/libICE.so.6 (0x00007f5aea16b000)
	libuuid.so.1 =&gt; /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f5ae9f66000)
</code></pre>
<p>Durch Zugabe von -pthread und -lpthread tut's. Hätte wohl das multithreading Kapitel doch nicht überspringen sollen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
<p>Aber eins nach dem anderen, zuerst mal geht es. Was da genau schief ging werde ich sicher in der Zukunft noch verstehen.</p>
<p>Jedenfalls mal danke so weit !</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2501784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501784</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sun, 10 Jul 2016 15:16:52 GMT</pubDate></item></channel></rss>