这真的很奇怪.如果我将它的值增加asize一个crashSystem(),那就是它的名字所说的.返回int指针的第二个函数可以使用更大的值.这两个函数只是删除并分配相同大小的相同动态数组(我创建它只是为了测试目的).
注意:我认为它可能与最大堆栈容量1MB(130037*8字节接近1MB)有关,但它真的很奇怪'因为使用new内部函数分配应该与其他任何工作相同new.
使用Visual Studio 2015
#include <iostream>
void crashSystem(int * dynamicArray, int asize) {
delete[] dynamicArray;
//dynamicArray = nullptr; does not matter at all
dynamicArray = new int[asize];
std::cout << "mem allocated\n";
}
int * worksOk(int * dynamicArray, int asize) {
int * newDynamicArray = new int[asize];
delete[] dynamicArray;
std::cout << "mem allocated\n";
return newDynamicArray;
}
int main()
{
int asize = 130037; // dynamic array size
//asize = 12330037; // for …Run Code Online (Sandbox Code Playgroud) 在我从循环中的表达式中使用getch()函数捕获它之后,我正在尝试使用"ch"变量.我根本不能使用它,因为它总是返回相同的char代码(1作为int).我知道我可以简单地使用while(1)并从那里开始工作getch(),但它被认为是不好的做法,我想知道为什么它不会以这种方式工作.
#include <iostream>
#include <conio.h>
int main()
{
while (char ch = getch() != 'q')
{
std::cout << ch;
}
}
Run Code Online (Sandbox Code Playgroud)
我在GNU GCC编译器中使用code :: blocks 13.12
顺便说一句..这也行不通
int main()
{
char ch;
while (ch = getch() != 'q')
{
std::cout << ch;
}
}
Run Code Online (Sandbox Code Playgroud)