X-Recipient: archive-cygwin AT delorie DOT com X-SWARE-Spam-Status: No, hits=2.4 required=5.0 tests=AWL,BAYES_05,FSL_RCVD_USER,RCVD_IN_DNSWL_NONE,RCVD_IN_HOSTKARMA_YE X-Spam-Check-By: sourceware.org Message-ID: <8ef10a0d4a6912c0aa23bc33eebbe95d.squirrel@zeusw.org> Date: Wed, 4 Jul 2012 11:45:00 +0200 Subject: Differences between C++ 'new' operator and 'malloc()' (NOT a C/C++ question) From: "Claude SIMON" To: cygwin AT cygwin DOT com Reply-To: sc DOT cygwin DOT com AT zeusw DOT org User-Agent: SquirrelMail/1.4.21 MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Hello everybody ! I have some C++ code that I want to use in a native Java component compiled with Cygwin g++. I also use exactly the same C++ code in a command-line tool ('.exe' binary). When I compile the tool with Visual C++, it works. When I compile the tool with g++, it works. When I compile the component with Visual C++, it works. When I compile the component with g++... it crashes. With 'gdb', I found that the problem happens when calling the 'malloc' function (as soon as the function is called, NOT when the returned allocated memory is used). When I replace the 'malloc' by a the C++ 'new' operator, the component compiled with Cygwin g++ doesn't crash anymore. To summarize, having some code written in C++ : - used in a command line tool : - using 'malloc' : - compiled with Visual C++ : works. - compiled with Cygwin g++ : works. - used in a Java native component : - using 'malloc' : - compiled with Visual C++ : works. - compiled with Cygwin g++ : CRASHES. - using the C++ 'new' operator : - compiled with Visual C++ : works. - compiled with Cygwin g++ : works. I thought that the C++ 'new' operator calls the 'malloc' function, but this seems not to be the case. As I want to use 'malloc'-like functions rather than the C++ 'new' operator, I wonder which functions are used in the C++ 'new' operator to allocate memory (and naturally which functions are used in the C++ 'delete' operator to free the memory). If it can be of some use, the component/tool can be found at http://zeusw.org/intl/expp . The g++ version is 4.5.3. Thanks ! -- Claude SIMON (sc.CYGWIN;COM AT zeusw DOT org) (Sorry for my poor English ; I'm French) -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple