<?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[HeapAlloc]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich schreibe ein kleines Programm und möchte mal testen, was so der Unterschied ist zwischen dem new-Operator und HeapAlloc.</p>
<pre><code class="language-cpp">CExchange* pExchange =new CExchange; /*(CExchange*)HeapAlloc
                                                           (GetProcessHeap(),
  					 HEAP_GENERATE_EXCEPTIONS,
					 sizeof(CExchange));*/
	pExchange-&gt;SetMembers(m_strAddress,m_uiPort);
	CString result=pExchange-&gt;FillList(&quot;Werte&quot;,&quot;Krit1&quot;,&quot;Krit2&quot;,true);
	pExchange-&gt;Close();
	/*
	HeapFree(GetProcessHeap(),
			 HEAP_NO_SERIALIZE,
			 pExchange);*/
	delete pExchange;
	pExchange=NULL;
</code></pre>
<p>So wie es sich jetzt darstellt, geht es. Wenn ich aber HeapAlloc und HeapFree benutze, gibt es eine Exception bei SetMembers.</p>
<pre><code class="language-cpp">void CExchange::SetMembers(CString strAddress, UINT uiPort)
{
	m_uiPort=uiPort;
	m_strAddress = strAddress;
}
</code></pre>
<p>und zwar bei dem &quot;=&quot; in der zweiten Zeile der Memberfunktion.<br />
Warum?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/62109/heapalloc</link><generator>RSS for Node</generator><lastBuildDate>Wed, 03 Jun 2026 21:38:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/62109.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 20 Jan 2004 11:51:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to HeapAlloc on Tue, 20 Jan 2004 11:51:54 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich schreibe ein kleines Programm und möchte mal testen, was so der Unterschied ist zwischen dem new-Operator und HeapAlloc.</p>
<pre><code class="language-cpp">CExchange* pExchange =new CExchange; /*(CExchange*)HeapAlloc
                                                           (GetProcessHeap(),
  					 HEAP_GENERATE_EXCEPTIONS,
					 sizeof(CExchange));*/
	pExchange-&gt;SetMembers(m_strAddress,m_uiPort);
	CString result=pExchange-&gt;FillList(&quot;Werte&quot;,&quot;Krit1&quot;,&quot;Krit2&quot;,true);
	pExchange-&gt;Close();
	/*
	HeapFree(GetProcessHeap(),
			 HEAP_NO_SERIALIZE,
			 pExchange);*/
	delete pExchange;
	pExchange=NULL;
</code></pre>
<p>So wie es sich jetzt darstellt, geht es. Wenn ich aber HeapAlloc und HeapFree benutze, gibt es eine Exception bei SetMembers.</p>
<pre><code class="language-cpp">void CExchange::SetMembers(CString strAddress, UINT uiPort)
{
	m_uiPort=uiPort;
	m_strAddress = strAddress;
}
</code></pre>
<p>und zwar bei dem &quot;=&quot; in der zweiten Zeile der Memberfunktion.<br />
Warum?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/440407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/440407</guid><dc:creator><![CDATA[CLoop]]></dc:creator><pubDate>Tue, 20 Jan 2004 11:51:54 GMT</pubDate></item><item><title><![CDATA[Reply to HeapAlloc on Tue, 20 Jan 2004 12:10:18 GMT]]></title><description><![CDATA[<p>Beim new-Operator läuft eine Menge mehr ab. Z.B. wir der ctor von CExchange aufgerufen, das macht HeapAlloc aber nicht. Ebenso wird wohl auch die Member-Variable &quot;m_strAddress&quot; (die, wie ich mal vermute, vom Typ CString ist) nicht initialisiert -&gt; Rumms!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/440423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/440423</guid><dc:creator><![CDATA[Shaggy]]></dc:creator><pubDate>Tue, 20 Jan 2004 12:10:18 GMT</pubDate></item><item><title><![CDATA[Reply to HeapAlloc on Tue, 20 Jan 2004 12:25:55 GMT]]></title><description><![CDATA[<p>Vielleicht bin ich ja so oder so auf der falschen Spur. Ich habe mit vadump.exe mein Programm überprüft und rausbekommen, dass es viel zu viel &quot;shared&quot; und &quot;sharable&quot; Speicher belegt hat. (Das wird wohl der Grund sein, weswegen es auf Computern mit wenig Arbeitsspeicher manchmal zu Fehlern kommt, hab ich mir gedacht.) Weil ich eigentlich alles mit new gemacht hab, wollte ich an ein paar Stellen mal ausprobieren, was passiert, wenn ich HeapAlloc benutze. Liege ich da überhaupt richtig? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/440440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/440440</guid><dc:creator><![CDATA[CLoop]]></dc:creator><pubDate>Tue, 20 Jan 2004 12:25:55 GMT</pubDate></item><item><title><![CDATA[Reply to HeapAlloc on Tue, 20 Jan 2004 16:19:38 GMT]]></title><description><![CDATA[<p>Noch ne Frage,<br />
in InitInstance, dort wo ich Achtung geschrieben habe, legt CWinApp den dlg sonst auf dem Stack an, nicht auf dem Heap. Findet jetzt nicht alles, was in ClientWareDlg gemacht wird, auf dem Heap statt?????<br />
Die Anzeige in vadump.exe hat sich leider nicht geändert!!!!</p>
<pre><code class="language-cpp">// ClientWare.cpp : Legt das Klassenverhalten für die Anwendung fest.
//

#include &quot;stdafx.h&quot;
#include &quot;ClientWare.h&quot;
#include &quot;ClientWareDlg.h&quot;
#include &quot;afxsock.h&quot;

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CClientWareApp

BEGIN_MESSAGE_MAP(CClientWareApp, CWinApp)
	//{{AFX_MSG_MAP(CClientWareApp)
		// HINWEIS - Hier werden Mapping-Makros vom Klassen-Assistenten eingefügt und entfernt.
		//    Innerhalb dieser generierten Quelltextabschnitte NICHTS VERÄNDERN!
	//}}AFX_MSG
	ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CClientWareApp Konstruktion

CClientWareApp::CClientWareApp()
{
	// ZU ERLEDIGEN: Hier Code zur Konstruktion einfügen
	// Alle wichtigen Initialisierungen in InitInstance platzieren
}

/////////////////////////////////////////////////////////////////////////////
// Das einzige CClientWareApp-Objekt

CClientWareApp theApp;

/////////////////////////////////////////////////////////////////////////////
// CClientWareApp Initialisierung

BOOL CClientWareApp::InitInstance()
{
	AfxEnableControlContainer();
	if(!AfxOleInit())
		MessageBox(NULL,&quot;Konnte Ole-Dlls nicht initialisieren!&quot;,&quot;Achtung!&quot;,MB_OK);

	// Standardinitialisierung
	// Wenn Sie diese Funktionen nicht nutzen und die Größe Ihrer fertigen 
	//  ausführbaren Datei reduzieren wollen, sollten Sie die nachfolgenden
	//  spezifischen Initialisierungsroutinen, die Sie nicht benötigen, entfernen.

	if (!AfxSocketInit())
	{
		AfxMessageBox(&quot;Socket-Initialisation gescheitert!&quot;);
		return FALSE;
	}

#ifdef _AFXDLL
	Enable3dControls();			// Diese Funktion bei Verwendung von MFC in gemeinsam genutzten DLLs aufrufen
#else
	Enable3dControlsStatic();	// Diese Funktion bei statischen MFC-Anbindungen aufrufen
#endif
//////////Achtung Achtung Achtung Achtung Achtung Achtung!!!!!!!!
	CClientWareDlg* dlg = new CClientWareDlg;///////////////sonst Stack
	m_pMainWnd = dlg;
	int nResponse = dlg-&gt;DoModal();
	if (nResponse == IDOK)
	{
		// ZU ERLEDIGEN: Fügen Sie hier Code ein, um ein Schließen des
		//  Dialogfelds über OK zu steuern
	}
	else if (nResponse == IDCANCEL)
	{
		// ZU ERLEDIGEN: Fügen Sie hier Code ein, um ein Schließen des
		//  Dialogfelds über &quot;Abbrechen&quot; zu steuern
	}

	// Da das Dialogfeld geschlossen wurde, FALSE zurückliefern, so dass wir die
	//  Anwendung verlassen, anstatt das Nachrichtensystem der Anwendung zu starten.
	return FALSE;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/440592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/440592</guid><dc:creator><![CDATA[CLoop]]></dc:creator><pubDate>Tue, 20 Jan 2004 16:19:38 GMT</pubDate></item></channel></rss>