什么时候对Malloc来说是一个好主意?

我为我的变量分配内存有点困惑。如果是我正在创建一个大型数据结构(一个数组,一个结构,一个对象等),我正在main()的范围初始化它,我应该创建一个局部变量
int chessBoard[8][8] = ...
或者我应该在堆上分配内存?
int * chessBoard = new array[8][8];
*chessBoard = ...
有关系吗?优惠吗?一个更有效/更聪明吗?我个人喜欢为更大的对象分配内存,我感觉不到堆栈框架的小。但我真的不知道。     
已邀请:
使用malloc分配的动态内存的主要原因是当您不知道编译时需要的最大内存量时。对于棋盘,大小总是八乘八,并且数组很好。在大多数计算机上,8乘8的int数组很小。 对于名称列表,您很少知道可能遇到的最大数量,因此请使用malloc。 数组更快一些,因为编译器会保留空间。对于malloc,有一个对库函数的运行时调用来请求内存。一旦你有了记忆,任何一种方式通常都是相同的速度。 使用指针访问malloc分配的内存比使用数组要复杂一点。但是如果你想成为一名C程序员,你应该理解这两点。 对于非常大量的内存,您必须使用malloc。 使用malloc分配的内存所犯的最大错误就是在完成后忘记释放它。如果您忘记释放它,可能会发生内存泄漏。     
当对象所有权需要传递很多时,使用malloc分配内存通常会更好。如果对象将在单个引用块中使用并且不会超出范围,那么局部变量肯定更好。这一切都归结为“你需要在完成循环后挂起它”。 如果它在你提示的main()中被定义,那么它肯定会永远有效(直到app关闭),在这种情况下,它变得更加个人偏好。许多人更喜欢局部变量,因为它们更容易阅读,并且解除引用看起来并不那么混乱。     
你应该考虑你分配的对象的大小,因为这样的代码:
int something[10000000];
会导致内存错误,但是:
int *something = new int[10000000];
会很好的。     

要回复问题请先登录注册