这个代码正确吗?
int *set_new (int choice) {
int *new_choice {new int};
*new_choice = choice;
return new_choice;
}
是否应该在返回值后删除,因为
在内存堆上?
int *set_new (int choice) {
int *new_choice {new int};
*new_choice = choice;
return new_choice;
delete new_choice;
}
或者,我需要在函数调用完毕的地方删除它吗?如果不删除,会不会造成内存泄漏?
我在一个网站上了解到,如果在删除(删除)之后立即使用动态内存(新),那么就不会出现内存泄漏。
该函数在
int main () {
int *b {new_choice (23)};
printf ("% d", *b);
delete b;
}
您不能删除将要使用的内容。分配给
此外,您不能在返回后删除要返回的函数中的内容,因为
int *set_new (int choice) {
int *new_choice {new int};
*new_choice = choice;
return new_choice;
delete new_choice; // this statement won't be reached
}
int *set_new (int choice) {
int *new_choice {new int};
*new_choice = choice;
return new_choice;
delete new_choice;
}
将永远不会执行
您的最后一个示例是正确的,您应该在使用指向对象之后