我正在使用Cygwin在Windows 7上为Linux编写命令解释器的代码。我的代码一直能够正确编译和运行,但是最近遇到了以下错误:
cygwin_exception::open_stackdumpfile:Dumping stack trace to jstack dump
我正在使用Cygwin在Windows 7上为Linux编写命令解释器的代码。我的代码一直能够正确编译和运行,但是最近遇到了以下错误:
cygwin_exception::open_stackdumpfile:Dumping stack trace to jstack dump
我发现当我试图将一个值传递给一个期望指针的函数时,会出现这个错误。
例如:
int arr[] = {1, 2, 3};
int i = 3;
memmove(i, arr, 3);
这段代码会出现cygwin_exception::open_stackdumpfile错误,因为你将一个值int i传递给一个期望内存地址的函数。
然而,这仅基于我的经验,这个错误可能有其他原因。
我今天遇到了这个问题。后来我发现后台还有另一个cygwin会话(shell)正在运行。可能它们影响了彼此的内存位置/分配。 一旦我杀死了它们两个,打开了一个新的,一切都恢复正常了! 希望能对你有所帮助。
memcpy()
时遇到了错误。问题是我试图将一个数组复制到一个未初始化的指针中。int array[] = {1, 2, 3, 4, 5};
int *arrPtr = array;
int *mem_ptr = NULL; // this row
memcpy(mem_ptr, array, 5 * sizeof(int));
int array[] = {1, 2, 3, 4, 5};
int *arrPtr = array;
int *mem_ptr = malloc(sizeof(int) * 5); // this row
memcpy(mem_ptr, array, 5 * sizeof(int));
这适用于ConEmu和其他基于Windows的终端仿真器,您可能需要将“滚动条”或“缓冲区高度”设置为小于2000的值。
实际数字取决于您终端的宽度。对我来说,最大化的窗口横跨240个字符,可以支持大约3200行的“滚动条”,然后cygwin应用程序开始崩溃。
我可以通过在干净的终端上运行ls -l -R / | head -n 2000
或类似输出来测试此功能,并诱导cygwin应用程序崩溃。
在使用 strcpy
和 strcat
连接 char 数组时,我遇到了类似的问题。
const char *host = "http://myaddress";
const char *uri = "/api/devices/";
const char *changes = "getChanges?";
const char *token = "token=something";
char *link;
strcpy(link, host);
strcat(link, uri);
strcat(link, changes);
strcat(link, token);
puts(link);
strcpy
时。
我通过将char *link
更改为char link[50]
来解决它。