c - 无法访问地址 (C) 处的内存
问题描述
我有一个 C 项目在这些函数上出现错误:
char * devolveIDDistritoDoConcelho(char *id_concelho)
{
return getSubstring(id_concelho, 0,2);
}
int devolveIndexDistritoDoConcelho(char *id_concelho)
{
int i = stringToInt(devolveIDDistritoDoConcelho(id_concelho))-1;
return i;
}
char * getSubstring(char *string, int startIndex, int length)
{
char *substring=(char *)malloc((length+1)*sizeof(char));
memcpy(substring, &string[startIndex], length);
substring[length] = '\0';
return substring;
}
int stringToInt(char * str)
{
return (int)strtol(str, (char **)NULL, 10);
}
一切顺利,正如我在调试器中看到的那样,(至少在返回之前)源字符串“0101”的子字符串中的值是“01”,但是当它进入函数 stringToInt 时,调试器会"0xffffffffffffffd0 <error: Cannot access memory at address 0xffffffffffffffd0>"
为参数str和程序提供值退出。
我已经尝试了很多东西,但问题并没有消失,谁能告诉我为什么会这样?谢谢
解决方案
推荐阅读
- javascript - 将 java 脚本数组复制到另一个数组
- windows - 使用 windows api 计算字母并打印数字数组
- html - 如何增加将导航栏更改为汉堡图标的大小
- reactjs - 为什么我的 IF 不返回组件
? - bash - 我可以使用变量名间接选择要写入的数组吗?
- html - 我正在尝试为我的网站水平对齐文本和图像
- pyqt5 - 在 Python 3.7 (Linux) 上安装 PyQt5
- r - 如何消除R中列表中的元素
- powershell - 使用powershell将多个文件夹重命名为大写而不是文件
- php - 当数据库失败或我想永久断开数据库时,如何将用户重定向到 404 页面?