我只是使用 cppcheck 代码工作正常只是 cppcheck 给出了这个错误。
void WorkerThread(WorkBuffer* m_buffer)
{
std::cout << "Thread : " << m_buffer->m_id << ".....Starting" << std::endl;
if (NULL == m_buffer)
std::cout << "Thread : " << m_buffer->m_id << "......work buffer is null" << std::endl;
while(!shut_down_flag)
{
int k = 0;
//Sleep(1);
SleepSystemUsec(100000);
std::cout << "Thread : " << m_buffer->m_id << "....in while loop" << std::endl;
} // of while(!shut_down_flag)
std::cout << "Thread : " << m_buffer->m_id << ".....Request from main thread so ending working thread ...." …Run Code Online (Sandbox Code Playgroud) 为什么这个结果会进入无限循环?
进入后for循环,我印刷的值i和v.size()-2与它们0和-1分别.因此,循环条件必须是false.那么,这个程序for首先如何进入循环?
#include <iostream>
#include <vector>
int main() {
std::vector<int> v {1};
std::cout << "Size:: " << v.size();
for (int i=0 ; i <= (v.size()-2) ; i++) {
std::cout << "Hello";
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) std::vector<int> tmp = ...
for(int i = 0; i <= tmp.size() - 3; i+=2){
std::cout << "i: " << i << " , tmp.size(): " << tmp.size() << std::endl;
if(tmp[i] == tmp[i+1]){
final.push_back(tmp[i] * 2);
}else{
final.push_back(tmp[i]);
final.push_back(tmp[i + 1]);
}
std::cout << "\ntmp.size() at the end of loop: " << tmp.size() << "\n";
}
Run Code Online (Sandbox Code Playgroud)
我有以下输出:
为什么循环执行i明显要大得多tmp.size()?
在C#ref和out关键字中.
它如何影响内存管理?内存管理ref和out关键字有什么区别吗?