gpt4 book ai didi

c - 从 VC++ 2008 编译器读取控制台输入 :Error

转载 作者:行者123 更新时间:2023-11-30 14:26:28 24 4
gpt4 key购买 nike

我正在使用这个简单的..但出现错误。

从控制台窗口读取目录路径,然后在窗口中打印该路径..

请检查为什么会出现未处理的异常错误:

错误:new_one.exe 中 0x1029984f (msvcr90d.dll) 处出现未处理的异常:0xC0000005:读取位置 0x745c3a46 时出现访问冲突。

#include "stdafx.h"
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#define MAX_PATH_LENGTH 256
int main(int argc, char *argv[])
{
int i;
int pathlength=100;
char *path=(char *)malloc(MAX_PATH_LENGTH);
free(path);
printf("Enter the path:");
scanf("%s",&path);
printf("%s",path);
getchar();
return 0;
}

我仍然遇到同样的异常..请给我任何建议

最佳答案

char *path;

未分配任何内存。您正在写入未分配的指针变量,导致未定义的行为,这显示为段错误。

您可以通过两种方式解决问题:

在堆栈上分配对象:

在堆栈上本地创建 path 作为数组,例如:

#define MAX_PATH_LENGTH 256

char path[MAX_PATH_LENGTH];

动态内存分配:

#define MAX_PATH_LENGTH 256

char *path=(char *)malloc(MAX_PATH_LENGTH);

如果您使用第二种方法,您需要在使用后显式释放分配的内存:

free(path);

通常,避免使用动态分配(第二种方法),除非内存需求太大而无法在堆栈上分配。

关于c - 从 VC++ 2008 编译器读取控制台输入 :Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9061821/

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