c++ - 获取有关使用未初始化内存的错误代码
问题描述
我正在使用 Visual Studio 进行编码,但我不明白为什么我只在 else if 条件语句正下方的行中收到错误“错误 C6001 - 使用未初始化的内存 '*tempPtr'”。
void removeNumber(double*& arrayPtr, double number, int& size) {
bool found = false;
double* tempPtr = new double[size-1];
for (int i = 0; i < size; i++) {
if (arrayPtr[i] == number) {
found = true;
}
else if (found == false && arrayPtr[i] != number) {
arrayPtr[i] = tempPtr[i];
}
else {
arrayPtr[i] = tempPtr[i - 1];
}
} delete[] arrayPtr;
arrayPtr = tempPtr;
--size;
}
解决方案
arrayPtr[i] = tempPtr[i];
在这一行中,您尝试将未初始化的 tempPtr[i] 分配给已初始化的 arrayPtr[i]。应该反过来。但是,如果您想要为 arrayPtr[i] 分配一个空指针,则可以使用空指针初始化 tempPtr。
这与问题无关,但我注意到最后您为arrayPtr 取消分配内存,然后使用arrayPtr。这将使您的程序在运行时崩溃。您只想在不再使用它时取消分配。
推荐阅读
- python-3.x - 如何修改 PostgreSQL psycopg 以接受变量而不是值
- spring - 使用 Spring Boot 在匿名 url 上接收授权标头
- apache-spark - Spark结构化流式连接不起作用
- elixir - 如何在另一个模块中使用结构
- terraform - local-exec 中的相对路径
- list - 如何在这个简单的双向链表实现中修复 SIGSEGV?
- python-3.x - IPOPT 不支持 Pyomo 的 quicksum 功能吗?不支持的表达式类型的 ValueError
- grammar - YACC 语法通过递增/递减修复移位减少错误
- python - 强化学习 - VPG:标量变量索引错误的无效索引
- python - 为什么标记 1 个复选按钮也标记第二个?Python Tkinter