id喜欢产生一个参数数量未知的进程。 到目前为止我的代码(使用power ++):
char** psaParameters = new char*[ saParameters.GetCount() ];
for( int i = 0; i < saParameters.GetCount(); i++ )
{
psaParameters[ i ] = new char[ saParameters[ i ].GetLength() ];
strcpy( psaParameters[ i ], saParameters[ i ].GetText() );
}
spawnv( P_WAIT, psaParameters[ 0 ], psaParameters );
但它崩溃了。为什么呢?
谢谢你! -dominik答案 0 :(得分:1)
saParameters[i]
是什么类型的?
您可能需要将此行更改为:
psaParameters[ i ] = new char[ saParameters[ i ].GetLength() + 1 ];
包括零终结符。
答案 1 :(得分:0)
saParameters
的类型是什么?我的猜测,不知道是GetLength()
返回不包括NUL终结符的字符数。由于strcpy
会自动添加此项,因此会导致saParameters
数组中的每个缓冲区溢出。
答案 2 :(得分:0)
您没有为终止空字符分配足够的空间。
psaParameters[ i ] = new char[ saParameters[ i ].GetLength() ];
应该是
psaParameters[ i ] = new char[ saParameters[ i ].GetLength() + 1 ];
答案 3 :(得分:0)
好的,我们发现了问题所在: