小编lea*_*ner的帖子

使用realloc重新分配动态内存

我正在学习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线程建议使用vectornew代替使用上述方法.因为,我正在尝试学习这种方法,所以这些答案不适用于我的问题.

我遇到过这种方法很合适的场景,例如,如果我正在使用ifstream.read函数和读取读取原始文本文件,那么就说1024字节.现在,如果我想确保我没有读到因1024字节大小而被破坏的单词,我必须从该位置进一步读取,ifstream.get直到找到空格字符为止.在这种情况下,我需要稍微调整缓冲区(1024).我的意图是在realloc这里为它分配更多的内存.

如果我在任何地方都错了,请随时纠正我.

c++ memory-leaks memory-management

2
推荐指数
2
解决办法
5249
查看次数

标签 统计

c++ ×1

memory-leaks ×1

memory-management ×1