小编spc*_*123的帖子

(Windows)我可以在程序运行时更改或停止程序吗?

我现在正在用C++编写一个win32程序。我想在窗口上展示我的运行过程,就像时间在流动一样。

例如,这段代码

int a=0;
for(int i=0;i<10;i++)
{
  a++;//The change in "a" can be seen on the window.
  Sleep(1*1000);
}
Run Code Online (Sandbox Code Playgroud)

但我发现,如果我想展示这个过程,比如点击一个按钮,屏幕上就会出现一个变化的数字,那么程序需要一直运行。此时,我没有办法做任何其他事情,例如单击另一个按钮。

所以我意识到我需要一个可以中断当前进程的操作。但我查了很多资料,发现只有Linux系统的fork()函数才能满足我的需求。但我现在使用的是Windows,那么还有什么其他方法可以实现这一点呢?真诚期待您的回复。

c++ winapi interrupt

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

为什么删除数组空间后数据仍然存在?

今天在创建动态数组时发现一个小问题。

我使用resize()函数来改变数组的大小。在resize()函数中,我创建了一个临时数组“newData”,然后为它分配了我想要的新大小。将初始数组“Data”的值分配给它后,我设置

Data=newData;
Run Code Online (Sandbox Code Playgroud)

此时resize()函数的任务就已经完成了。在退出该函数之前,我突发奇想,删除了“newData”的空格:

delete [] newData;
Run Code Online (Sandbox Code Playgroud)

之后,当我输出Data[2]的值时,仍然可以输出该值。

现在我有点困惑。“Data”和“newData”应该是指针,对吗?当我使用“Data=newData;”语句时,“Data”指向的内容应该成为“newData”指向的地址空间。如果我删除了“newData”的地址空间,那么“Data”对应的空间不也应该消失吗?为什么我可以继续输出值?

以下是完整代码

#include<iostream>
using namespace std;
int Length = 0;
int* Data;
void resize(int,int *);

int main()
{
  Data = new int[5];//This is the space I allocated for the initial array
  for (int i = 0; i < 5; i++)
     Data[i] = i;
  Length = 5;//There are five data in the initial array
  int newLength = 10;//I started distributing new sizes to the initial array
  resize(newLength,Data);
  cout << Data[2];//The output is still …
Run Code Online (Sandbox Code Playgroud)

c++ arrays pointers

-1
推荐指数
1
解决办法
75
查看次数

标签 统计

c++ ×2

arrays ×1

interrupt ×1

pointers ×1

winapi ×1