我正在学习C++.我正在尝试学习这种动态内存分配.在下面的代码中,我试图使用malloc和分配内存realloc.
int main (void) {
char *g = (char*) malloc (sizeof(char) * 2);
g = "ab";
g = (char*) realloc (g, sizeof(char) * 200);
strcpy (g, "cdefg");
cout << g << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我执行此代码时出现分段错误错误.
我已经看到其他SO线程建议使用vector或new代替使用上述方法.因为,我正在尝试学习这种方法,所以这些答案不适用于我的问题.
我遇到过这种方法很合适的场景,例如,如果我正在使用ifstream.read函数和读取读取原始文本文件,那么就说1024字节.现在,如果我想确保我没有读到因1024字节大小而被破坏的单词,我必须从该位置进一步读取,ifstream.get直到找到空格字符为止.在这种情况下,我需要稍微调整缓冲区(1024).我的意图是在realloc这里为它分配更多的内存.
如果我在任何地方都错了,请随时纠正我.