【发布时间】:2018-10-13 02:05:30
【问题描述】:
不同的程序员有不同的编码风格。 我和同事正在研究图像数据处理,我们有 3 种不同的方法。
同事 1:
int IMAGE_WIDTH=1280;
int IMAGE_HEIGHT=800;
char* colleague1_way() //just allocate when he wants
{
char* mem = malloc(IMAGE_WIDTH*IMAGE_HEIGHT*2);
return mem;
}
int main(void)
{
char* data;
data=colleague1_way();
function1(data); //pass by pointer
function2(data); //pass by pointer
function3(data); //pass by pointer
free(data);
}
同事2:
int IMAGE_WIDTH=1280;
int IMAGE_HEIGHT=800;
char* data; //set it as global memory
void colleague2_way()
{
data = malloc(IMAGE_WIDTH*IMAGE_HEIGHT*2);
}
int main(void)
{
colleague2_way();
function1(); //void input, proceed data inside function
function2(); //void input, proceed data inside function
function3(); //void input, proceed data inside function
free(data);
}
我:
int IMAGE_WIDTH=1280;
int IMAGE_HEIGHT=800;
int main(void)
{
char* data = malloc(IMAGE_WIDTH*IMAGE_HEIGHT*2);
function1(data); //pass by reference
function2(data); //pass by reference
function3(data); //pass by reference
free(data);
}
我的想法是
- 我可以清楚地看到分配的内存,并在 main() 结束时释放它。
- function1~3可能在另一个cpp文件中,所以很容易处理。
任何人都可以给我评论,有没有更好的方法? 另外,如果是C++,有什么好的方法吗?
【问题讨论】:
-
你发布的是C代码。你是用 C++ 编译器编译这个吗? Edit您标记为仅使用正确的语言,因为两种语言的答案会有所不同。
-
1) 避免在
colleague2_way()中使用全局data2) 检查分配是否成功。 3) 使用信息更丰富的函数名称。 4) 分配函数colleagueN_way()值得释放配对函数colleagueN_unway()5) 避免用应用程序细节填充main()6) 考虑使用 codereview 对更多扩展代码进行此类审查。
标签: c memory-management coding-style