此栈非彼栈
malloc不在栈上分配空间,这里的栈是内存空间中的栈,不是我们的数据结构类型,不是一码事
不可以使用malloc来申请栈空间,因为栈是由编译器自动进行管理的,申请的空间是在编译期间确定的,无法使用malloc来动态地申请。
如果需要动态申请内存空间,只能使用堆空间,即使用malloc或new来申请空间。如果需要在栈上使用动态大小的内存空间,可以考虑使用可变长度数组(VLAs)或者使用标准库中的vector。
以下是使用VLAs的例子:
void foo(int n) {
int arr[n]; // 可变长度数组
// 使用数组进行操作
}
int main() {
int size = 10;
foo(size); // 调用函数,传入需要的数组大小
return 0;
}
以下是使用vector的例子:
#include <vector>
void foo(int n) {
std::vector<int> vec(n); // 使用vector申请动态大小的空间
// 使用vector进行操作
}
int main() {
int size = 10;
foo(size); // 调用函数,传入需要的vector大小
return 0;
}