在C中具有变量数组大小的动态数组分配
varible sized数组,也称为动态数组,在标准的C中提出了挑战。请考虑以下程序。 0; file*图片; while(!feof(picture)){
n = fread(sbuf,sizeof(char),siz,picture); / * ...用缓冲区做事... */ /* memset(sbuf,0,sizeof(sbuf)); */试图分配一个由变量SIZ确定的大小的字符。但是,在标准C中,阵列大小必须是常数。 This poses the question: how can we declare siz correctly to allow code compilation?
Unfortunately, there is no direct method to declare an array with a variable size in standard C. However, several alternatives exist:
In modern C , the std::vector container can be used as a flexible alternative to数组。它可以很容易地扩展到任何所需的大小,并且其用法相对简单。
新运算符:
可以使用新操作员在堆上动态分配内存。要创建具有可变大小的数组,可以使用char* sbuf = new char [siz];在堆上分配一系列SIZ字符。但是,这种方法引入了内存管理问题(例如,潜在的内存泄漏),使其不适合STD :: vector。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3