gpt4 book ai didi

c - 为什么这段代码在释放指针时给出运行时异常

转载 作者:行者123 更新时间:2023-12-04 11:09:07 25 4
gpt4 key购买 nike

我有简单的代码,

#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++ 文档。

(按重试调试应用程序)

中止重试忽略

最佳答案

p = "Hello"; 使 p 指向字符串文字并丢弃先前分配的值。您不能 free 字符串文字。您无法修改它。

如果你想让p保存那个字符串,只需使用

char* p = "Hello";

char p[] = "Hello";

如果您打算修改它。

两者都不需要免费

关于c - 为什么这段代码在释放指针时给出运行时异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14214761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com