相关疑难解决方法(0)

为什么使用alloca()不被视为良好做法?

alloca()在堆栈上而不是在堆上分配内存,如同的情况一样malloc().所以,当我从例程返回时,内存被释放.所以,实际上这解决了我释放动态分配内存的问题.释放分配的内存malloc()是一个令人头痛的问题,如果不知何故错过会导致各种内存问题.

alloca()尽管有上述特征,为什么不鼓励使用?

c malloc stack allocation alloca

381
推荐指数
18
解决办法
12万
查看次数

如何在 VC++ 中创建可变大小的 char 数组

const int sizea = 600; 
char sz[sizea];
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常。但下面的代码段会导致错误。我正在开发 Visual Studio 2005 - MFC 应用程序

CString strFinal;

.......//strFinal value is dynamically changing . . 

const int size = strFinal.GetLength();
char sz[size];
Run Code Online (Sandbox Code Playgroud)

错误 2 错误 C2057:预期的常量表达式
错误 5 错误 C2070:'char []':非法 sizeof 操作数
错误 4 错误 C2133:'sz':未知大小 错误 3 错误 C2466:无法分配常量大小 0 的数组

c++ arrays mfc visual-studio

6
推荐指数
1
解决办法
2万
查看次数

为什么没有编译错误的数组定义具有非常量值?

我以为我应该得到allData的以下char数组定义的编译错误:

void MyClass::aMethod(const char* data, int size)
{
   int headerSize = 50;
   MyHeader header;
   //size is not constant and unknown at compile time
   char allData[size + headerSize]; //<<<<<==== should not allowed!! but not error??
   memcpy(allData, &header, headerSize);
   memcpy(allData + headerSize, data, size);
   ....
}
Run Code Online (Sandbox Code Playgroud)

为什么?它会产生运行时错误吗?

c++ arrays

4
推荐指数
1
解决办法
213
查看次数

帮助解决类型转换错误

当我尝试编译我的程序时,我收到以下错误:

main.cpp: In function ‘int main()’:
main.cpp:67: error: cannot convert ‘int (*)[(((long unsigned int)(((long int)mapSizeY) -      1)) + 1u)]’ to ‘int (*)[10]’ for argument ‘3’ to ‘void initializeMap(int, int, int (*)[10])’
main.cpp:68: error: cannot convert ‘int (*)[(((long unsigned int)(((long int)mapSizeY) - 1)) + 1u)]’ to ‘int (*)[10]’ for argument ‘3’ to ‘void paintMap(int, int, int (*)[10])’
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像这样:

#include <iostream>
using namespace std;

void initializeMap(int mapSizeX, int mapSizeY, int map[][10])
{
    // Map details:
    // 0 = # (wall)
    // 1 …
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
230
查看次数

无法分配常量大小为0的数组

 int len = GetWindowTextLengthW(hwndEdit) + 1;
 wchar_t text[len];
Run Code Online (Sandbox Code Playgroud)

我明白了

错误2错误C2466:无法分配常量大小的数组0
错误3错误C2133:'text':未知大小
错误1错误C2057:预期的常量表达式

我不明白为什么它不会编译,因为GetWindowTextLengthW(hwndEdit)+ 1> 0

null + 1 = 1不是真的吗?

c++ arrays visual-studio-2010

0
推荐指数
1
解决办法
7952
查看次数

标签 统计

c++ ×4

arrays ×3

alloca ×1

allocation ×1

c ×1

malloc ×1

mfc ×1

stack ×1

visual-studio ×1

visual-studio-2010 ×1