delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2012/07/04/05:45:35

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" <sc DOT cygwin DOT com AT zeusw DOT org>
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
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019