c ++ sizeof给出错误未处理的异常

时间:2012-05-11 04:17:18

标签: c++ crash runtime-error sizeof

这只是一个基本的打印句子数组字符串。我是c ++的新手,只使用过JAVA和类似的语言。尝试通过遍历每种不同的排序算法和数据结构来学习它。

但是在我开始之前测试我的字符串数组会给我一个错误。我不知道为什么它会给我一个错误。实际编译运行良好并打印意图内容,但如果您正在调试它则会崩溃并出现错误。任何人都可以向我解释为什么会这样。从c ++库中尝试size()length()但必须使用sizeof() '

//BubbleSort.cpp
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;

int main()
{
    string something[14];
    something[0] = "Kate";
    something[1] = "likes";
    something[2] = "lots";
    something[3] = "of";
    something[4] = "cake";
    something[5] = "in";
    something[6] = "her";
    something[7] = "mouth";
    something[8] = "and";
    something[9] = "will";
    something[10] = "pay";
    something[11] = "a";
    something[12] = "lot";
    something[13] = "lol";
    int some = sizeof(something);
    some--;
    for (int i = 0; i < some; i++)
    {
        cout << something[i] << " " ;
    }
    system("pause");
    return 0;
}

1 个答案:

答案 0 :(得分:8)

sizeof(something)不会按预期返回14,但会返回sizeof(string)*14,因此当您尝试打印时遇到缓冲区溢出。 你需要的是

some = sizeof(something)/sizeof(string) 

或@Tiago提到你可以使用

some = sizeof(something)/sizeof(something[0])

同样@James建议您应该查看std:vector