使用指向malloc分配内存之外的指针的预期行为

时间:2014-03-16 09:29:23

标签: c++ c

只是想知道,因为我无法找到测试方法。想象一下我有10个字节的内存

的场景
  1. 我有3个字节的malloc varA
  2. 分配一个包含7个字符的字符串(最多使用8个字节)
  3. 我有3个字节的malloc varB
  4. 程序会遇到错误吗?或者最终得到胡言乱语的记忆?

    行为是否与c / c ++和cuda程序不同?

2 个答案:

答案 0 :(得分:7)

这不是内存泄漏,而是缓冲区溢出。这些导致未定义的行为,这很可能会在运行时给你带来奇怪的问题(甚至是崩溃)。

除非你的字面意思是指2,否则就像

一样
char *str = malloc(5);
str = "foobar";

然后你有内存泄漏,没有缓冲区溢出。

答案 1 :(得分:0)

写入超出已分配内存的行为是未定义的行为。