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

Expected behavior for using pointer beyond malloc allocated memory

本文关键字:指针 分配 malloc 内存      更新时间:2023-10-16

只是想知道,因为我不能想出一个方法来测试这个。假设我有10字节的内存

  1. I malloc varA为5字节
  2. 指定一个7个字符的字符串(使用8字节)

程序会出现错误吗?还是以乱码记忆告终?

c/c++和cuda程序的行为不同吗?

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

除非你指的是第2点,比如

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

那么确实有内存泄漏,而没有缓冲区溢出。

写超出分配的内存是一种未定义的行为。