经典指数          
原因
2863
浏览数
0
收藏数
 

请阅读下面代码片段并且回答问题:
#define SIZE_20M (20*1024*1024)
void func_a()
{
    char *temp = malloc(SIZE_20M)
    return;
}
void func_b()
{
    char temp[SIZE_20M];
    //...do something using temp
    return;
}

关于这段代码,下列说法正确的是
  • func_a 获得临时内存的方式效率通常更高。
  • func_b 使用了太多的栈,程序可能会在运行时候崩溃。
  • func_b 存在内存泄露
  • func_a 和func_b 分配的内存会自动初始化0

     举报   纠错  
 
切换
1 个答案
【malloc(大小)   分配到堆区 void * malloc(usingned int size);单位是(byte)字节数   其作用是在内容的动态存储区分配一个长度位 side 空间,此函数是一个指针型函数,返回的指针是该分配区域的开头的位置(或首地址) 注意指针的类型位void 即不指向任何类型的数据,只提供一个地址。放什么类型的数据,强制转换为什么类型。 如果函数未能成功申请到空间(内存不足),返回空指针 NULL】 上面的代码也该改为 char *temp = (char *)malloc(SIZE_20M);
 
切换
撰写答案
扫描后移动端查看本题