Do you always must check for bad_alloc whenever dynamically allocating memory?
If new cannot find enough memory, it throws an exception. Do I absolutely always need to check for that? I never did that and had no issues, but now I've read you should do that. Or only in certain cases?
try
{
pPos = new Vector2D(5,1);
}
catch(bad_alloc)
{
// NO MEMORY!
}
c++ exception-handling bad-alloc
add a comment |
If new cannot find enough memory, it throws an exception. Do I absolutely always need to check for that? I never did that and had no issues, but now I've read you should do that. Or only in certain cases?
try
{
pPos = new Vector2D(5,1);
}
catch(bad_alloc)
{
// NO MEMORY!
}
c++ exception-handling bad-alloc
2
Depends on whether you can recover from lack of memory. Most of the time, no.
– Passer By
Nov 13 '18 at 3:12
You can catchbad_alloc
and ask the user to download more RAM,
– Henri Menke
Nov 13 '18 at 3:42
add a comment |
If new cannot find enough memory, it throws an exception. Do I absolutely always need to check for that? I never did that and had no issues, but now I've read you should do that. Or only in certain cases?
try
{
pPos = new Vector2D(5,1);
}
catch(bad_alloc)
{
// NO MEMORY!
}
c++ exception-handling bad-alloc
If new cannot find enough memory, it throws an exception. Do I absolutely always need to check for that? I never did that and had no issues, but now I've read you should do that. Or only in certain cases?
try
{
pPos = new Vector2D(5,1);
}
catch(bad_alloc)
{
// NO MEMORY!
}
c++ exception-handling bad-alloc
c++ exception-handling bad-alloc
asked Nov 13 '18 at 3:01
VegetaVegeta
4616
4616
2
Depends on whether you can recover from lack of memory. Most of the time, no.
– Passer By
Nov 13 '18 at 3:12
You can catchbad_alloc
and ask the user to download more RAM,
– Henri Menke
Nov 13 '18 at 3:42
add a comment |
2
Depends on whether you can recover from lack of memory. Most of the time, no.
– Passer By
Nov 13 '18 at 3:12
You can catchbad_alloc
and ask the user to download more RAM,
– Henri Menke
Nov 13 '18 at 3:42
2
2
Depends on whether you can recover from lack of memory. Most of the time, no.
– Passer By
Nov 13 '18 at 3:12
Depends on whether you can recover from lack of memory. Most of the time, no.
– Passer By
Nov 13 '18 at 3:12
You can catch
bad_alloc
and ask the user to download more RAM,– Henri Menke
Nov 13 '18 at 3:42
You can catch
bad_alloc
and ask the user to download more RAM,– Henri Menke
Nov 13 '18 at 3:42
add a comment |
1 Answer
1
active
oldest
votes
There's nothing special about bad_alloc
, you can catch it or not as you would any other exception. It is unusual to catch it. You would only do that if you had some way to recover from the out-of-memory condition. But I think programs that are designed to deal with out-of-memory errors more commonly use the nothrow
version of new
instead:
pPos = new (std::nothrow) Vector2D(5,1);
if (!pPos) {
// NO MEMORY!
}
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53273165%2fdo-you-always-must-check-for-bad-alloc-whenever-dynamically-allocating-memory%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
There's nothing special about bad_alloc
, you can catch it or not as you would any other exception. It is unusual to catch it. You would only do that if you had some way to recover from the out-of-memory condition. But I think programs that are designed to deal with out-of-memory errors more commonly use the nothrow
version of new
instead:
pPos = new (std::nothrow) Vector2D(5,1);
if (!pPos) {
// NO MEMORY!
}
add a comment |
There's nothing special about bad_alloc
, you can catch it or not as you would any other exception. It is unusual to catch it. You would only do that if you had some way to recover from the out-of-memory condition. But I think programs that are designed to deal with out-of-memory errors more commonly use the nothrow
version of new
instead:
pPos = new (std::nothrow) Vector2D(5,1);
if (!pPos) {
// NO MEMORY!
}
add a comment |
There's nothing special about bad_alloc
, you can catch it or not as you would any other exception. It is unusual to catch it. You would only do that if you had some way to recover from the out-of-memory condition. But I think programs that are designed to deal with out-of-memory errors more commonly use the nothrow
version of new
instead:
pPos = new (std::nothrow) Vector2D(5,1);
if (!pPos) {
// NO MEMORY!
}
There's nothing special about bad_alloc
, you can catch it or not as you would any other exception. It is unusual to catch it. You would only do that if you had some way to recover from the out-of-memory condition. But I think programs that are designed to deal with out-of-memory errors more commonly use the nothrow
version of new
instead:
pPos = new (std::nothrow) Vector2D(5,1);
if (!pPos) {
// NO MEMORY!
}
edited Nov 13 '18 at 4:33
answered Nov 13 '18 at 3:55
Peter RudermanPeter Ruderman
10.1k2352
10.1k2352
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53273165%2fdo-you-always-must-check-for-bad-alloc-whenever-dynamically-allocating-memory%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
Depends on whether you can recover from lack of memory. Most of the time, no.
– Passer By
Nov 13 '18 at 3:12
You can catch
bad_alloc
and ask the user to download more RAM,– Henri Menke
Nov 13 '18 at 3:42