c++ - memset() 导致数据中止

标签 c++ c memory windows-mobile

当调用 memset() 时,我的一些代码中出现一些奇怪的间歇性数据中止(< 5% 的时间)。问题是除非代码运行了几天,否则通常不会发生这种情况,因此很难实时捕捉到它。

我正在使用以下代码:

char *msg = (char*)malloc(sizeof(char)*2048);
char *temp = (char*)malloc(sizeof(char)*1024);
memset(msg, 0, 2048);
memset(temp, 0, 1024);
char *tempstr = (char*)malloc(sizeof(char)*128);

sprintf(temp, "%s %s/%s %s%s", EZMPPOST, EZMPTAG, EZMPVER, TYPETXT, EOL);
strcat(msg, temp);

//Add Data
memset(tempstr, '\0', 128);
wcstombs(tempstr, gdevID, wcslen(gdevID));
sprintf(temp, "%s: %s%s", "DeviceID", tempstr, EOL);
strcat(msg, temp);

如您所见,我并没有尝试使用比最初使用 malloc() 分配的大小更大的 memset

有人看到这可能有什么问题吗?

最佳答案

如果没有可用内存,

malloc 可以返回 NULL。你没有检查那个。

关于c++ - memset() 导致数据中止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22459/

相关文章:

C:我无法让这个示例税收计划发挥作用

c - 写入 Linux on ARM 中的物理地址

c++ - 如何创建抽象数据类型的模板类?

c++ - 在头文件或源文件中包含 stdafx.h?

c++ - 是否可以使用 C++ 应用程序中的 api 从 Deezer 流式传输全长音轨?

c - 为什么我不能在 glibc 中调用任意函数

c++ - 可以使用默认参数复制包含 lambda 的 std::function 吗?

c - 用FUSE写入FS, `cat>a`时出现功能未实现错误

近似空闲存储(堆)大小的 C++ 程序

Javascript:将类/对象引用设置为 NULL,内存中的子对象/类会发生什么?