今天看代码,定义了一个结构体
typedef struct {
int a;
int b;
int char[6*1024];
} ss_t;
//定义一个指针
ss_t *sTmp = NULL;
sTmp = malloc(sizeof(ss_t));
我的第一反应是,怎么可以定义这么大数据,容易把栈搞死(理由:数组保存在栈空间)。
哎...忘了是由malloc产生的,根本就是生成在堆上。
但是这样结构体定义变量时就会容易出现栈资源专用严重问题,如下:
ss_t tmp;
这样一个变量就占用了6K多栈资源,就不合理了。定义改为如下
typedef struct {
int a;
int b;
int char* buf
} ss_t;
定义变量 ss_t tmp;再使用malloc申请 buf 就更为合理。