c++ - 段错误 11 : gdb reason 13

标签 c++ memory

<分区>

这是我的代码:

int main(){

long userInput;
long placeArray[userInput +1];
long divisionPlace, modPlace;
long number = userInput;
long two = 2;

cout << "enter: ";
cin >> userInput;


for (int i = 1; i < userInput; i++) {
    divisionPlace = number / two;
    modPlace = number % two;
    placeArray[number - i ] = modPlace;
}

for (int i = 0; i < userInput; i++) {
    cout << placeArray[i] << " ";
}
cout <<endl;

return 0;
}

有人可以指出我在代码中错误处理内存的原因吗?

最佳答案

如评论中所述,您在 userInput 初始化之前使用它:

long placeArray[userInput +1];

因此,当您在下面的循环中访问它时,placeArray 不会具有您期望的大小。这将导致写入您未分配的内存,并会弄乱您的堆栈。

关于c++ - 段错误 11 : gdb reason 13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13018151/

相关文章:

c++ - 链接器不包括未引用的数组

c# - 将 C++ App Server 与 C# Web 服务(客户端+服务器)集成的好方法

c++ - (c)make - 递归编译

c - 从内核空间声明一个指向用户空间数组的指针并填充它

python - 如何在 Python 2.7 中使用临时变量 - 内存

c++ - 如何制作模板抽象类列表

c++ - 在 C++11 中移出 std priority_queue 的元素

iphone - 使用 VM 跟踪器进行 iOS 分析。脏内存和常驻内存导致内存警告,怎么办?

java - 分配大的新字符串时如何使用更少的内存

python - 当数字大于 Python 的 sys.maxint 时,它们是否需要更多内存?