C ++ char * [255]产生分段错误

时间:2016-07-20 16:42:45

标签: c++ qt ubuntu segmentation-fault

我知道这可能是基本的,已被讨论了1000次,但我想我需要帮助理解为什么以下会产生分段错误:

char* outputPath = new char[255];
sprintf(outputPath, "/home/istrab/iStrabGUI Output/%s/%s/0/Frames",patientName, techName);

我想知道这是因为经过一些研究后,我已经宣布数组的大小为255,我知道它足够大以容纳我希望写入的字符串。在我尝试写入之前,我还确保它已初始化。我还加倍确定任何涉及的变量在代码中早先初始化,或者程序将在那时退出。还有另外一种方法可以解决这个问题吗?它是在字符串本身还是我初始化数组的方式?

此代码是使用Qt 4.8.6在C ++中编写的

4 个答案:

答案 0 :(得分:3)

如果您正在使用Qt,请使用QString

QString outputPath;
outputPath.sprintf( "/home/istrab/iStrabGUI Output/%s/%s/0/Frames",
                    patientName, 
                    techName);

答案 1 :(得分:1)

在其上运行gdb并在该行上放置一个中断,然后打印patientName和techName的值。其中一个可能是空的。

答案 2 :(得分:1)

您可以使用QDir方法。

QDir path("/home/istrab/iStrabGUI Output/");
path.cd(patientName);
path.cd(techName);
path.cd("/0/Frames");

QString pathString = path.path();

答案 3 :(得分:0)

vars patientName,techName是问题,你应该使用resize outputPath变大,不会溢出。

但我试图找出使用字符串库中的字符串var。 Look here