小编Sha*_*ido的帖子

为什么这两个类似功能中的一个崩溃而且一个正常?

这真的很奇怪.如果我将它的值增加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)

c++ arrays pointers function dynamic-memory-allocation

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

getch()inside while while循环总是返回1

在我从循环中的表达式中使用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)

c++ getch

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