#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...