<?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[global operator new, new[], delete und delete[] überladen]]></title><description><![CDATA[<p>Hallo an alle!<br />
Ich habe in meinem Projekt ein Speichermanagement implementiert, das ein Logbuch über nicht freigegebenes führt.</p>
<p>Dabei tritt folgendes Problem auf. Der Compiler (VC++ 2008 SP1) sagt folgendes:</p>
<pre><code>1&gt;MemoryManager.cpp
memorymanager.h(75) : error C2375: 'operator delete': Neudefinition; unterschiedliche Bindung
predefined c++ types (compiler internal)(24): Siehe Deklaration von 'operator delete'
memorymanager.h(77) : error C2375: 'operator delete[]': Neudefinition; unterschiedliche Bindung
1&gt;        c:\program files (x86)\microsoft visual studio 9.0\vc\include\new(79): Siehe Deklaration von 'operator delete[]'
memorymanager.cpp(84) : error C2264: 'operator delete[]': Fehler in der Funktionsdefinition oder Funktionsdeklaration, Funktion nicht aufgerufen
</code></pre>
<p>Deklariert ist alles in MemoryManager.h:</p>
<pre><code class="language-cpp">//////////////////////////////////////////////////////////////////
//Überladung und Ersetzung der globalen Operatoren new, new[], delete, und delete[]
#ifdef _DEBUG
/// @brief Im Debug: Kapselt MemoryManager::Alloc
GT_API void * operator new(size_t Size, const char* StrFunction, DWORD dwLine, const char* StrFile);
/// @brief Im Debug: Kapselt MemoryManager::Alloc
GT_API void * operator new[](size_t Size, const char* StrFunction, DWORD dwLine, const char* StrFile);
/// @brief Im Debug: Kapselt MemoryManager::Free
GT_API void operator delete(void *pMemory);
/// @brief Im Debug: Kapselt MemoryManager::Free
GT_API void operator delete[](void *pMemory);

//Anreicherung aller new-Aufrufe mit Debug-Infos
#define new new (__FUNCTION__, __LINE__, __FILE__)
#endif
</code></pre>
<p>Und definiert in MemoryManager.cpp</p>
<pre><code class="language-cpp">//////////////////////////////////////////////////////////////////
//Überladung und Ersetzung der globalen Operatoren new, new[], delete, und delete[]
#ifdef _DEBUG
GT_API void * operator new(size_t Size, const char* StrFunction, DWORD dwLine, const char* StrFile)
{
	return(GT::Core::MemoryManager::Instance().Alloc((DWORD)(Size), StrFunction, dwLine, StrFile));
}
GT_API void * operator new[](size_t Size, const char* StrFunction, DWORD dwLine, const char* StrFile)
{
	return(GT::Core::MemoryManager::Instance().Alloc((DWORD)(Size), StrFunction, dwLine, StrFile));
}
GT_API void operator delete(void *pMemory)
{
	return(GT::Core::MemoryManager::Instance().Free(pMemory));
}
GT_API void operator delete[](void *pMemory)
{
	return(GT::Core::MemoryManager::Instance().Free(pMemory));
}
#endif
</code></pre>
<p>Wie löse ich das Problemchen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/255511/global-operator-new-new-delete-und-delete-überladen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 21:41:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/255511.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 01 Dec 2009 17:37:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to global operator new, new[], delete und delete[] überladen on Thu, 03 Dec 2009 19:39:41 GMT]]></title><description><![CDATA[<p>Hallo an alle!<br />
Ich habe in meinem Projekt ein Speichermanagement implementiert, das ein Logbuch über nicht freigegebenes führt.</p>
<p>Dabei tritt folgendes Problem auf. Der Compiler (VC++ 2008 SP1) sagt folgendes:</p>
<pre><code>1&gt;MemoryManager.cpp
memorymanager.h(75) : error C2375: 'operator delete': Neudefinition; unterschiedliche Bindung
predefined c++ types (compiler internal)(24): Siehe Deklaration von 'operator delete'
memorymanager.h(77) : error C2375: 'operator delete[]': Neudefinition; unterschiedliche Bindung
1&gt;        c:\program files (x86)\microsoft visual studio 9.0\vc\include\new(79): Siehe Deklaration von 'operator delete[]'
memorymanager.cpp(84) : error C2264: 'operator delete[]': Fehler in der Funktionsdefinition oder Funktionsdeklaration, Funktion nicht aufgerufen
</code></pre>
<p>Deklariert ist alles in MemoryManager.h:</p>
<pre><code class="language-cpp">//////////////////////////////////////////////////////////////////
//Überladung und Ersetzung der globalen Operatoren new, new[], delete, und delete[]
#ifdef _DEBUG
/// @brief Im Debug: Kapselt MemoryManager::Alloc
GT_API void * operator new(size_t Size, const char* StrFunction, DWORD dwLine, const char* StrFile);
/// @brief Im Debug: Kapselt MemoryManager::Alloc
GT_API void * operator new[](size_t Size, const char* StrFunction, DWORD dwLine, const char* StrFile);
/// @brief Im Debug: Kapselt MemoryManager::Free
GT_API void operator delete(void *pMemory);
/// @brief Im Debug: Kapselt MemoryManager::Free
GT_API void operator delete[](void *pMemory);

//Anreicherung aller new-Aufrufe mit Debug-Infos
#define new new (__FUNCTION__, __LINE__, __FILE__)
#endif
</code></pre>
<p>Und definiert in MemoryManager.cpp</p>
<pre><code class="language-cpp">//////////////////////////////////////////////////////////////////
//Überladung und Ersetzung der globalen Operatoren new, new[], delete, und delete[]
#ifdef _DEBUG
GT_API void * operator new(size_t Size, const char* StrFunction, DWORD dwLine, const char* StrFile)
{
	return(GT::Core::MemoryManager::Instance().Alloc((DWORD)(Size), StrFunction, dwLine, StrFile));
}
GT_API void * operator new[](size_t Size, const char* StrFunction, DWORD dwLine, const char* StrFile)
{
	return(GT::Core::MemoryManager::Instance().Alloc((DWORD)(Size), StrFunction, dwLine, StrFile));
}
GT_API void operator delete(void *pMemory)
{
	return(GT::Core::MemoryManager::Instance().Free(pMemory));
}
GT_API void operator delete[](void *pMemory)
{
	return(GT::Core::MemoryManager::Instance().Free(pMemory));
}
#endif
</code></pre>
<p>Wie löse ich das Problemchen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1816056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1816056</guid><dc:creator><![CDATA[Blaze]]></dc:creator><pubDate>Thu, 03 Dec 2009 19:39:41 GMT</pubDate></item><item><title><![CDATA[Reply to global operator new, new[], delete und delete[] überladen on Tue, 01 Dec 2009 18:36:52 GMT]]></title><description><![CDATA[<p>Das ist zwar nur geraten, aber evtl. stört das GT_API-Makro. Zudem sollte in MemoryManager.cpp innerhalb des _DEBUG-#ifs ein #undef new stehen. Wurde &lt;new&gt; zuvor eingebunden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1816101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1816101</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 01 Dec 2009 18:36:52 GMT</pubDate></item><item><title><![CDATA[Reply to global operator new, new[], delete und delete[] überladen on Tue, 01 Dec 2009 19:10:44 GMT]]></title><description><![CDATA[<p>Ohne Makro hab ich auch schon probiert: kein Erfolg.<br />
new wird ganz am Anfang in MemoryManager.cpp ge-#undef-t.<br />
Mit #include&lt;new&gt; kann ich jetzt zumindest schonmal die lib compilieren.<br />
Aber er warnt:</p>
<pre><code>1&gt;log.cpp(12) : warning C4291: 'void *operator new(size_t,const char *,DWORD,const char *)': Kein zugehöriger delete-Operator gefunden; Speicher wird nicht freigegeben, wenn die Initialisierung eine Ausnahme auslöst
1&gt;memorymanager.h(71): Siehe Deklaration von 'operator new'
</code></pre>
<p>die Anwendung geht garnicht zu compilieren.<br />
Fehler:</p>
<pre><code>main.cpp(38) : warning C4291: 'void *operator new(size_t,const char *,DWORD,const char *)': Kein zugehöriger delete-Operator gefunden; Speicher wird nicht freigegeben, wenn die Initialisierung eine Ausnahme auslöst
memorymanager.h(71): Siehe Deklaration von 'operator new'
main.cpp(39) : warning C4291: 'void *operator new(size_t,const char *,DWORD,const char *)': Kein zugehöriger delete-Operator gefunden; Speicher wird nicht freigegeben, wenn die Initialisierung eine Ausnahme auslöst
memorymanager.h(71): Siehe Deklaration von 'operator new'
Verknüpfen...
Demo02 Main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;void * __cdecl operator new(unsigned int,char const *,unsigned long,char const *)&quot; (??2@YAPAXIPBDK0@Z)&quot; in Funktion &quot;_main&quot;.
main.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1816128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1816128</guid><dc:creator><![CDATA[Blaze]]></dc:creator><pubDate>Tue, 01 Dec 2009 19:10:44 GMT</pubDate></item><item><title><![CDATA[Reply to global operator new, new[], delete und delete[] überladen on Tue, 01 Dec 2009 19:16:00 GMT]]></title><description><![CDATA[<p>Gibt es vieleicht sons noch eine Möglichkeit, nicht freigegebene Speicherstückchen/Pages (wie immer die auch heißen) aufzulisten. zu loggen und freizugeben ohne andere Funktionen als new und delete zu benutzen?<br />
Es soll auch einen gewissen Kofort haben.</p>
<p>Sonst kann ich gleich ein Makro ala #define DEBUG_NEW(size) MemMgr.Alloc(size, __FILE__, __LINE__, ... schreiben.<br />
Aber das will ich nicht.</p>
<p>Gibt es in VC++ vieleicht integrierte Methoden für sowas?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1816130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1816130</guid><dc:creator><![CDATA[Blaze]]></dc:creator><pubDate>Tue, 01 Dec 2009 19:16:00 GMT</pubDate></item><item><title><![CDATA[Reply to global operator new, new[], delete und delete[] überladen on Tue, 01 Dec 2009 20:15:35 GMT]]></title><description><![CDATA[<p>Blaze schrieb:</p>
<blockquote>
<p>Gibt es in VC++ vieleicht integrierte Methoden für sowas?</p>
</blockquote>
<p>Schau mal hier: <a href="http://msdn.microsoft.com/en-us/library/e5ewb1h3.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/e5ewb1h3.aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1816162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1816162</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 01 Dec 2009 20:15:35 GMT</pubDate></item><item><title><![CDATA[Reply to global operator new, new[], delete und delete[] überladen on Wed, 02 Dec 2009 15:43:15 GMT]]></title><description><![CDATA[<p>Funktioniert! Danke! <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1816547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1816547</guid><dc:creator><![CDATA[Blaze]]></dc:creator><pubDate>Wed, 02 Dec 2009 15:43:15 GMT</pubDate></item><item><title><![CDATA[Reply to global operator new, new[], delete und delete[] überladen on Wed, 02 Dec 2009 20:15:09 GMT]]></title><description><![CDATA[<p>Also ich empfehle immer auch den VLD (Visual Leak Detector) gerne:<br />
<a href="http://sites.google.com/site/dmoulding/vld" rel="nofollow">http://sites.google.com/site/dmoulding/vld</a></p>
<p>Benutze den selbst noch gerne.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1816706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1816706</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 02 Dec 2009 20:15:09 GMT</pubDate></item><item><title><![CDATA[Reply to global operator new, new[], delete und delete[] überladen on Thu, 03 Dec 2009 19:39:24 GMT]]></title><description><![CDATA[<p>Wird ja immer besser! :xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1817330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1817330</guid><dc:creator><![CDATA[Blaze]]></dc:creator><pubDate>Thu, 03 Dec 2009 19:39:24 GMT</pubDate></item><item><title><![CDATA[Reply to global operator new, new[], delete und delete[] überladen on Thu, 03 Dec 2009 20:49:04 GMT]]></title><description><![CDATA[<p>Blaze schrieb:</p>
<blockquote>
<p>Wird ja immer besser! :xmas1:</p>
</blockquote>
<p>Ist ja fast, wie Weihnachten. :p<br />
*SCNR*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1817373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1817373</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 03 Dec 2009 20:49:04 GMT</pubDate></item></channel></rss>