Send MinGW-Notify mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
https://lists.osdn.me/mailman/listinfo/mingw-notify
or, via email, send a message with subject or body 'help' to
[email protected]
You can reach the person managing the list at
[email protected]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of MinGW-Notify digest..."
Please do not reply to this notification; the sender address is unable to
accept incoming e-mail. If you wish to unsubscribe you can do so at
https://lists.osdn.me/mailman/listinfo/mingw-notify.
Today's Topics:
1. [mingw] #40686: std::string custom operator new/delete
function (MinGW Notification List)
----------------------------------------------------------------------
Message: 1
Date: Sat, 05 Sep 2020 17:07:35 +0900
From: MinGW Notification List <[email protected]>
To: OSDN Ticket System <[email protected]>
Subject: [MinGW-Notify] [mingw] #40686: std::string custom operator
new/delete function
Message-ID: <[email protected]>
Content-Type: text/plain; charset=UTF-8
#40686: std::string custom operator new/delete function
Open Date: 2020-08-30 18:32
Last Update: 2020-09-05 17:07
URL for this Ticket:
https://osdn.net//projects/mingw/ticket/40686
RSS feed for this Ticket:
https://osdn.net/ticket/ticket_rss.php?group_id=3917&tid=40686
---------------------------------------------------------------------
Last Changes/Comment on this Ticket:
2020-09-05 17:07 Updated by: marvol
Comment:
Reply To keith
Thank you for the explanation!
Maybe. You haven't shown me anything, which I might evaluate.
Actually, the code is similar, just include vector
1. #include <vector>
and replace the "test" function:
1. void test()
2. {
3. std::vector<int> vec;
4. vec.push_back(42);
5. printf("vec[0]: %d\n", vec[0]);
6. }
My operator new/delete is called in all optimization levels.
---------------------------------------------------------------------
Ticket Status:
Reporter: marvol
Owner: (None)
Type: Issues
Status: Open
Priority: 1 - Lowest
MileStone: (None)
Component: GCC
Severity: 1 - Lowest
Resolution: Works For Me
---------------------------------------------------------------------
Ticket details:
Hello,
I am writing a custom wrapper for new/delete allocations to get an aligned
memory. I noticed that if I use std::string, operator new/delete are not called
as it is in a linux version of g++ (operators new/delete are called). With the
default optimization level, operator new/delete is not called and with
optimization levels O1, O2, O3 only operator delete is called.
Source:
1. #include <string>
2. #include <cstdio>
3. #include <cstdlib>
4.
5. void* operator new(size_t size)
6. {
7. printf("Calling new: %zu", size);
8. void* address = malloc(size);
9.
10. printf(" address: 0x%p\n", address);
11. return address;
12. }
13.
14. void* operator new[](size_t size)
15. {
16. printf("Calling new[]: %zu", size);
17. void* address = malloc(size);
18.
19. printf(" address: 0x%p\n", address);
20. return address;
21. }
22.
23. void operator delete(void* address)
24. {
25. printf("Calling delete, address: 0x%p\n", address);
26. free(address);
27. }
28.
29. void operator delete[](void* address)
30. {
31. printf("Calling delete[], address: 0x%p\n", address);
32. free(address);
33. }
34.
35. struct Obj
36. {
37. std::string m_str;
38. };
39.
40. void test()
41. {
42. Obj obj;
43. obj.m_str = "long string ......................";
44. }
45.
46. int main()
47. {
48. test();
49.
50. return 0;
51. }
Compiling with the default optimization level:
• g++ main.cpp -std=c++11 -o test.exe
Output:
• NONE
Compiling with the O2 optimization level:
• g++ main.cpp -std=c++11 -O2 -o test.exe
Output:
• Calling delete, address: 0x00542098
I am using:
• OS: Windows 7
• Mingw: 5.4.1
• Shell: cmd MINGW32_NT-6.1 MARTIN-LENOVO 1.0.18(0.48/3/2) 2012-11-21 22:34
i686 Msys
• Uname -a:
• G++: g++ (MinGW.org GCC Build-2) 9.2.0
• GCC: gcc (MinGW.org GCC Build-2) 9.2.0
• ld: GNU ld (GNU Binutils) 2.32
--
Ticket information of MinGW - Minimalist GNU for Windows project
MinGW - Minimalist GNU for Windows Project is hosted on OSDN
Project URL: https://osdn.net/projects/mingw/
OSDN: https://osdn.net
URL for this Ticket:
https://osdn.net/projects/mingw/ticket/40686
RSS feed for this Ticket:
https://osdn.net/ticket/ticket_rss.php?group_id=3917&tid=40686
------------------------------
Subject: Digest Footer
_______________________________________________
MinGW-Notify mailing list
[email protected]
https://lists.osdn.me/mailman/listinfo/mingw-notify
------------------------------
End of MinGW-Notify Digest, Vol 36, Issue 6
*******************************************