我正在使用这个简单的..收到错误。
从控制台窗口读取目录路径,然后在窗口中打印路径..
请检查为什么会出现未处理的异常错误:
错误: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;
}
我仍然得到了sam eexception ..请给我任何建议
答案 0 :(得分:2)
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
分配的内存:
free(path);
通常,避免使用动态分配(第二种方法),除非内存要求太大而无法在堆栈上分配。