我用Visual Studio 2010与Code Analysis激活.在我的代码中,有一行在函数中分配一些内存:
TCHAR someString[40000];
Run Code Online (Sandbox Code Playgroud)
代码分析会抛出一条警告消息:
警告C6262:函数使用'40000'字节的堆栈:超出/分析:stacksize'16384'.考虑将一些数据移动到堆中
我想知道是否应该严肃对待警告.如果我在堆栈上分配一些内存> 16384,我是否必须面对一些真正的麻烦?或者它只是一个一般的警告信息,它提醒我,我必须照顾我的堆栈大小?据我所知,默认堆栈大小为1MB(如果您使用Visual Studio).
我正在使用VisualStudio2010通过PCRE进行一些正则表达式匹配。假设我有这样的模式和主题std::wstring:
std::wstring subject = L"??????";
std::wstring pattern = L"??";
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我试图找到日本的字符串,因此我需要PCRE的Unicode变量,例如pcre16或pcre32与功能pcre16_exec或pcre32_exec等。
不幸的是,它不起作用。我的问题似乎是从wstring到unsigned short或unsigned int 的转换(取决于pcre16或pcre32)。我尝试了很多功能(wcstombs_s,使用QString进行字符串转换等),但没有成功。exec函数的结果永远不会保存我期望的正确值。我不太确定出了什么问题-使用简单的pcre函数与ansi字符串进行模式匹配可以正常工作。这是一个片段:
pcre16 *re;
const char *error;
int erroffset;
int ovector[30]; //The reult of the matching
int subject_length;
int rc;
std::wstring subjectstr = L"??????";
std::wstring patternstr = L"??";
subject_length = 6;
const unsigned short pattern = ....// string conversion from patternstr
const insigned short subject = ....// string conversion from subjectstr
re = pcre16_compile(&pattern, PCRE_UTF16, &error, &erroffset, NULL);
rc = …Run Code Online (Sandbox Code Playgroud) 我是一个全新的SQL新手.我有两张桌子.每个表都有一个主键列(ID)和其他几个具有整数值的列.
例如:
现在我想将两个表合并到一个表中 - 以每个ID添加所有苹果,香蕉和西红柿的方式.
例如:
对于此任务,SQL语句如何?