c 例子分析 記憶體內容覆蓋

2021-07-09 08:02:34 字數 377 閱讀 5080

#include "stdafx.h"

#include

void fun(char*p)

int _tmain(int argc, _tchar* argv)

{char p[1];

fun(p);

return 0;

以上程式在64位編譯,出現問題分析,以及修改方式

因為sizeof(p) p是指標 所以大小是固定的8,而自身分配的大小是1 所以fun函式的 memset會導致其他的記憶體覆蓋。

strcpy盡量用strcpy_s 帶大小,這樣可以防止更改他人的記憶體

修改方式:

將函式引數進行修改如下所示。

void fun(char*p,int nsize) 

C 程式設計中的細節 內容覆蓋

乙個簡單的示例來講解下這個問題。class concrete class concrete1 class concrete2 public concrete1 class concrete3 public concrete2 int main concrete2 pc2 pc2 val 10 pc2...

C語言記憶體分析

c語言記憶體分析 一 進製 概念 進製是一種計數方式,是數值的表現形式 4種主要的進製 十進位制 0 9 二進位制 0和1 八進位制 0 7 十六進製制 0 9 a b c d e f c語言在預設的情況下為十進位制。int num 1010 十進位制 int num 0b1100 二進位制,以0b...

C語言記憶體分析

c語言記憶體分析 一 進製 概念 進製是一種計數方式,是數值的表現形式 4種主要的進製 十進位制 0 9 二進位制 0和1 八進位制 0 7 十六進製制 0 9 a b c d e f c語言在預設的情況下為十進位制。int num 1010 十進位制 int num 0b1100 二進位制,以0b...