写入位置0x0..的C++访问冲突正在设置int*
C++ Access violation writing location 0x0... setting int *
我已经在这里和其他地方查看了各种问题,但我仍然无法解释我遇到的访问违规错误。"写入位置0x00000000的访问冲突"对应于NULL指针,对吗?我已经声明了一个int指针,稍后我会尝试在该位置设置一个值。当我声明指针时,不应该分配内存空间吗?如果这是中午,请原谅我,但我更像是一个Java/AS3的家伙。
这是我代码的一部分。。。
int* input;
char* userInput[1];
int* output;
int _tmain(int argc, _TCHAR* argv[])
{
while(1)
{
srand(time(0));
*input = (int)(rand() % 10);
它在最后一行断了。
为指针分配内存,但指针本身仍然不指向任何位置。使用new
为要指向的指针分配内存,稍后使用delete
释放内存。
您声明了一个指针,但从未为其分配内存。全局指针变量初始化为零,所以幸运的是,在堆栈上,您会得到未定义的行为。
在取消引用之前执行input = new int
。
指针本身的内存是保留的(足够容纳一个地址),但没有任何内存供指针指向。
根据您的Java背景,您会认识到这类似于NullReferenceException
。
否。int* input;
只声明一个指向int的指针,而不是保存整数所需的实际空间。
否。内存空间从不分配给指针。你必须自己分配。(如果你在C++中,你几乎应该总是使用智能指针而不是原始指针)
"当我声明指针时,不应该分配内存空间吗"-HEAP上的内存只有在使用new关键字时才会分配。例如,
int *ptr //creates a pointer variable on the stack
ptr = new int(5); //allocates space in heap and stores 5 in that space
希望这对你有帮助!
您真的需要指针吗?如果你只需要一些int
和一个字符串,你可以直接分配它们:
int input;
int output;
std::string userInput;
int _tmain(int argc, _TCHAR* argv[])
{
while(1)
{
srand(time(0));
input = rand() % 10;
相关文章:
- 在类 (C++) 之外设置 const int 成员变量
- 类中的 C++ int 被设置为值,似乎不知从何而来
- 查找不在标准中的第一个值::设置<int>最小-最大值
- Qt 原子 int 获取并立即设置
- 如何检查 int 中是否恰好设置了一位?
- 无法从JNI设置Java Int数组字段
- 将标准:设置为<int> jintArray
- C++:无法在按位函数后将 int 类型设置为非标量
- 在循环中设置指向 int 值的指针
- 错误C4430:丢失类型指定词 - 假设INT.注意:C 不支持对我的构造函数的默认设置
- C++:Unordered_map.template(char,int)未设置所需的值
- 无法使用 pair<int、int> 作为 STL 中设置C++键
- 使用强制转换和设置填充将 int 值更改为时间
- 如何将数组的一部分从 int 转换为浮点数并将值设置为另外两个数组
- 在字符串中设置一个等于 int + "," 的某个字母
- 标准::地图按值大小排序(设置<int>)
- 在 map<int 中插入,设置<int>>
- 在c++中设置int为Infinity
- 设置联合:设置<int>×集合<int>→集合<int>
- 写入位置0x0..的C++访问冲突正在设置int*