【发布时间】:2012-12-22 07:01:29
【问题描述】:
我有简单的代码,
#include "stdafx.h"
#include <malloc.h>
int main()
{
char *p = (char*) malloc(10);
p = "Hello";
free(p);
return 0;
}
此代码在终止时给出运行时异常。以下是最简单的错误,
Microsoft Visual C++ 调试库
调试断言失败!
程序:...\我的文档\visual studio 2010\Projects\samC\Debug\samC.exe 文件:f:\dd\vctools\crt_bld\self_x86\crt\src\dbgheap.c 线路:1322
表达式:_CrtIsValidHeapPointer(pUserData)
有关您的程序如何导致断言的信息 失败,请参阅有关断言的 Visual C++ 文档。
(按重试调试应用程序)
中止重试忽略
【问题讨论】:
-
将
std::string用于您期望的字符串语义。 -
您将 p = "Hello" 与 strcpy(p, "hello) 混淆了
-
这是一个C代码,所以我需要使用char *,其次我没有得到异常的原因。
-
@PranitPKothari,如果是 C,为什么用 C++ 标记?
-
@chris,抱歉,已编辑标签。