我的应用程序中有预先录制的音频文件的音频缓冲区。我正在尝试获取整个音轨的频域数据,这是我尝试过的:
getAudioDataFromBuffer: function(buf){
var src = g.audioContext.createBufferSource();
src.buffer = buf;
var anal = src.context.createAnalyser();
src.connect(anal);
var dataArray = new Uint8Array(buf.length);
anal.fftSize = 2048;
anal.getByteFrequencyData(dataArray);
return dataArray;
},
Run Code Online (Sandbox Code Playgroud)
但这只会给我一个充满零的数组。
我需要这个来比较两个音轨,一个是预先录制的,另一个是在应用程序中录制的。我想我可以测量它们的频域之间的相关性。
如果我声明一个指针用作"动态数组",如下所示:
int *arr;
Run Code Online (Sandbox Code Playgroud)
不使用new关键字或指定任何大小.
这是坏代码吗?这个指针到底指向哪里?
在这种情况下,让我说我初始化数组如下:
arr = new int[5];
Run Code Online (Sandbox Code Playgroud)
然后拨打这个电话(对我有用):
arr[100] = 10;
Run Code Online (Sandbox Code Playgroud)
我可以通过这种方式意外覆盖其他一些数据吗?(到目前为止,这从未发生在我身上).关于在此指针声明后剩余多少个连续块,是否存在"安全阈值"?
下面的代码打印for循环中的预期输出,但是一旦我退出循环,它只打印"Here",下面没有任何内容.我在这里错过了什么?
char ** strs = new char*[n];
for (int i = 0; i < n; i++)
{
string str;
getline(cin, str);
strs[i] = const_cast<char*>(str.c_str());
cout << strs[i] << endl;
}
cout <<"here" <<strs[1] << endl;
Run Code Online (Sandbox Code Playgroud)